问题描述
在此代码中
void something () { /*something*/ }
是()分隔符还是运算符?
我在函数调用()中知道是运算符:
something();
但是在函数定义中,拥有一个运算符会有些奇怪,因为运算符实际上是一个函数,并且函数定义中有一个函数?
有人可以解释这个话题吗?分隔符/标点符到底是什么?它们是编译器区分部分代码的标记吗?例如两个语句?
/*statement1*/;
/*statement2*/;
; s将语句彼此分开
那么它们是编译器理解源代码的基本语法元素吗?
解决方法
取决于上下文。
C ++ 中的 ()
可以
它是一个运算符,因为()
在语言规范中被字面上定义为函数调用运算符。由于重载运算符仍然是运算符,因此它与传递给它的参数数量无关(零个或多个)。
用(编程)语言表示的分隔符通常定义为一个或两个令牌,用于将某些语言功能与其他语言功能区分开。在调用参数时将参数传递给函数的情况就是这种情况,因为括号将函数名称与函数参数分开。如果在函数调用期间没有传递参数实参,则不是这种情况,因为没有要分离的东西。在这种情况下,()
将充当运算符,而不是分隔符。
我几乎也忘了提到一个事实,即在运算中还使用圆括号来表示优先级(充当分隔符,而不是运算符)。
()
充当运算符,但不作为分隔符的另一个示例将是强制转换。