内置运算符(new,delete和函数调用除外)如何返回?

时间:2017-02-18 11:53:39

标签: c++ operators language-lawyer

我找到了下一个内置运算符,它们可以在第5条中返回
new,delete,function call,logical OR,所有赋值运算符。

前三个运营商都很清楚:

  • new运算符通常调用返回的赋值函数 结果。
  • delete运算符通常调用deallocation函数 返回结果。
  • 函数调用的结果通常是 被调用的return语句的操作数的结果 功能

其他内置运算符未调用函数。 那么他们如何归还?
我们只能说这些运算符会像其他任何表达式一样评估结果值或产生副作用。 标准中有两个关于内置逻辑AND和内置赋值运算符的不准确性吗?

让我们看一下逻辑OR(§5.15/ 1):

  

||操作员组从左到右。操作数都是   在上下文中转换为bool(第4条)。如果其中任何一个返回为真   其操作数是真的,否则是假的。

与逻辑AND(§5.14/ 1)的技术上正确的定义进行比较:

  

&&操作员组从左到右。操作数都是   在上下文中转换为bool(第4条)。 结果如果两者都是真的   操作数是真实的,否则就是假的。

为什么他们在||的情况下使用“return”运算符和“结果是”逻辑AND?

的情况

接下来看一下内置赋值运算符(§5.18/ 1)。

  

所有都需要一个可修改的左值作为左操作数,返回一个   左值是指左操作数。

我们再次看到“返回”而不是“结果是”。

P.S。我没有在标准中找到任何类似“表达式返回”的短语,所以看起来这些短语在技术上是不正确的。使用它们可以SmallChange

1 个答案:

答案 0 :(得分:0)

从上面的讨论(感谢 Matteo Italia )我们可以得出结论,概念之间绝对没有区别"返回结果"和"产生/评估结果值"对于内置运算符(至少对于内置运算符唯一有趣的内置类型)。