Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C/C+中的运算符与函数+; 最近有人问我C++标准运算符(例如,新的、删除、siZeof)和函数(例如,TAN、FALL、MALLC)之间的区别。所谓“标准”是指默认情况下由编译器套件提供的,而不是用户定义的。下面是我给出的答案,尽管两个答案都不令人满意_C++ - Fatal编程技术网

C/C+中的运算符与函数+; 最近有人问我C++标准运算符(例如,新的、删除、siZeof)和函数(例如,TAN、FALL、MALLC)之间的区别。所谓“标准”是指默认情况下由编译器套件提供的,而不是用户定义的。下面是我给出的答案,尽管两个答案都不令人满意

C/C+中的运算符与函数+; 最近有人问我C++标准运算符(例如,新的、删除、siZeof)和函数(例如,TAN、FALL、MALLC)之间的区别。所谓“标准”是指默认情况下由编译器套件提供的,而不是用户定义的。下面是我给出的答案,尽管两个答案都不令人满意,c++,C++,(1) 操作员使用它不需要包含任何标题:例如,您可以在不包含任何标题的情况下调用new。但是,函数(比如free())确实需要强制包含头 (2) 操作符在标准头中的某个地方被定义为这样的操作符(即类操作符)。函数不是 你能评论一下这些答案并给我一个更好的区别吗?(1)严格来说不是真的typeid是一个运算符,但它的使用需要包含 我的答案很简单,运算符就是这样定义的:不一定需要被视为操作员,但标准说它是操作员,事实就是如此 如果你想找一个更详细的答案,我会继续提到,操作符大部分看起来不像函数。而那

(1) 操作员使用它不需要包含任何标题:例如,您可以在不包含任何标题的情况下调用new。但是,函数(比如free())确实需要强制包含头

(2) 操作符在标准头中的某个地方被定义为这样的操作符(即类操作符)。函数不是

你能评论一下这些答案并给我一个更好的区别吗?

(1)严格来说不是真的
typeid
是一个运算符,但它的使用需要包含

我的答案很简单,运算符就是这样定义的<例如,代码>:不一定需要被视为操作员,但标准说它是操作员,事实就是如此


如果你想找一个更详细的答案,我会继续提到,操作符大部分看起来不像函数。而那些做[
sizeof
typeid
]的不作为函数;它们的操作数不会在运行时计算

运算符有特殊的语法,例如,您可以使用
new
(或
+
)而无需在运算符名称后的括号中添加参数

运算符是具有固定语法的关键字。那些可以重载的可能在语法上有所不同,但这是在界限之内的。
new
操作符仍然拼写为
new
,即使重载,调用它的语法也始终相同

函数名是标识符,几乎可以是任意的。没有任何语法上的原因可以不使用
malloc()

bool my_fancy_alloc(void*& memory, unsigned char size, bool zero_it);

相反。(马克:还有其他原因,比如你同事的理智。)

据我所知,函数名是goto运算符的一种表示形式,跳转到特定代码位置后,应用程序可以执行一对多的工作单元,另一方面,操作员执行实际的工作单元。

操作员和功能在概念上是相同的。 它们都将一些值作为输入,并返回一些值作为输出。
它们唯一的区别在于语法。

编译器将运算符编译成一系列指令


当代码调用一个函数时,它必须跳转到一段单独的代码

这两个集合中是否故意使用了“delete”?请看,运算符也是函数,即使它们具有奇特的语法,并且语言中预定义了一些重载。我想你想问的是“C++定义的关键字和C++函数之间的区别”@ PaSerCEBA:你可以说(一些)操作符可以通过编写遵循特殊命名方案的函数来实现,但我不会说“操作符是函数”。中缀运算符
+
就是:中缀运算符。它可能是由函数
运算符+()
-实现的,也可能不是(如
42+1
)。@sbi:我想重要的不是实现,而是语义概念。运算符和函数之间没有明确的边界。但是在保留的关键字/符号(如
new
+
和标识符)之间有一个区别:保留的关键字/符号已经被编译器使用/知道,而标识符是声明/定义的(可能使用保留的关键字/符号),通常在标题中(标准或非标准)。谢谢。但是纯C操作符(比如+)会发生什么呢?它们不能是类运算符,但它们是运算符,因为C标准这么说?@user:我不明白你在问什么<代码>运算符+可以为类重载。+1。我猜这个问题一开始就错了(操作符和函数?),但是你突出显示关键字和标识符的答案就解决了所有问题。