如何解决在C ++中的函数定义中,括号是运算符还是分隔符/标点符号?
在此代码中
void something () { /*something*/ }
是()分隔符还是运算符?
我在函数调用()中知道是运算符:
something();
但是在函数定义中,拥有一个运算符会有些奇怪,因为运算符实际上是一个函数,并且函数定义中有一个函数?
有人可以解释这个话题吗?分隔符/标点符到底是什么?它们是编译器区分部分代码的标记吗?例如两个语句?
/*statement1*/;
/*statement2*/;
; s将语句彼此分开
那么它们是编译器理解源代码的基本语法元素吗?
解决方法
取决于上下文。
C ++ 中的 ()
可以
它是一个运算符,因为()
在语言规范中被字面上定义为函数调用运算符。由于重载运算符仍然是运算符,因此它与传递给它的参数数量无关(零个或多个)。
用(编程)语言表示的分隔符通常定义为一个或两个令牌,用于将某些语言功能与其他语言功能区分开。在调用参数时将参数传递给函数的情况就是这种情况,因为括号将函数名称与函数参数分开。如果在函数调用期间没有传递参数实参,则不是这种情况,因为没有要分离的东西。在这种情况下,()
将充当运算符,而不是分隔符。
我几乎也忘了提到一个事实,即在运算中还使用圆括号来表示优先级(充当分隔符,而不是运算符)。
()
充当运算符,但不作为分隔符的另一个示例将是强制转换。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。