在C++中,函数定义中的括号是运算符还是分隔符/标点符号



在此代码中

void something () { /*something*/ }

((是分隔符还是运算符?

正如我在函数调用((中所知道的,是操作符:

something();

但在函数定义中,有一个运算符会有点奇怪,因为运算符实际上是一个函数,而函数定义中有一个函数?

有人能解释一下这个话题吗?分隔符/标点符号究竟是什么?它们是编译器区分代码某些部分的标记?例如两个语句?

/*statement1*/;
/*statement2*/;

s正在将语句彼此分离

所以它们是编译器理解源代码的原子语法元素?

取决于上下文。

C++中的()可以同时满足这两个定义(运算符和分隔符(,或者一次只能满足一个。

它是一个运算符,因为()在语言规范中被定义为函数调用运算符。由于重载运算符仍然是运算符,这与传递给它的参数数量无关(零或几个(。

(编程(语言中的分隔符通常被定义为将某些语言特征与其他语言特征分隔开的一个或两个标记。当函数被调用时,将参数传递给函数时就是这种情况,因为括号将函数名称与函数参数分隔开。如果在函数调用过程中没有传递任何参数参数,则情况并非如此,因为没有什么可分离的。在这种情况下,()将充当运算符,但不充当分隔符。

我还几乎忘记了一个事实,即圆括号在算术中也用于表示优先级(充当分隔符,而不是运算符(。

()充当运算符,但充当分隔符的另一个示例是强制转换。

最新更新