表达方式new int;
比如在int * x = new int;
is a 新的表达方式 https://en.cppreference.com/w/cpp/language/new。术语“新运算符”似乎可以与“新表达式”互换使用,例如在这个问题中:“新运营商”和“新运营商”之间的区别? https://stackoverflow.com/questions/1885849/difference-between-new-operator-and-operator-new
关键字是否正确new https://en.cppreference.com/w/cpp/keyword/new因为它在新表达式中使用是一个运算符?为什么或者为什么不?
如果不是,是否还有其他理由将新表达式称为“新运算符”?
我很难找到运算符的权威定义。
我已经明白了之间的区别新运算符 https://en.cppreference.com/w/cpp/memory/new/operator_new它为对象和“新表达式”分配内存,最终可能调用operator new
.
new
in new int
不被视为操作员。它也不被认为是not一个操作员。
对于“运算符”的构成,C++ 标准确实很模糊,甚至不一致。当列出运算符(在词法分析和预处理期间定义)时,它将它们与“标点符号”一起列出(例如(
),但从来没有真正给出过标点符号的一般规则。它列出了new
作为关键字和运算符。它列出了sizeof
在关键字集中但不在运算符集中,但稍后将其称为运算符。
这里的要点是,C++ 标准委员会并不太关心将词法世界分为“运算符”和“非运算符”。这是因为实际上没有必要这样做。没有适用于所有运算符或所有非运算符的语法规则。重要的集合,例如可过载运算符,分别给出;诸如二进制算术表达式之类的语法规则一次给出一个。
基本上,“运算符”对于 C++ 语言来说不是一个正式意义上的类别,因此任何明确的答案都将基于它的“感觉”。如果您愿意,您可以将其称为运算符,但您也可以将其称为关键字(或标点符号!),并且语言标准不会与您不同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)