在我的C ++ 11标准副本(ISO / IEC 14882:2011(E))中,赋值运算符定义包括:


  在简单赋值(=)中,表达式的值替换了左操作数所引用的对象的值。


这不应该说“正确的操作数的值”而不是“表达式的值”吗?目前,它似乎模棱两可,并且很容易解释为“赋值表达式的值”。

[expr.ass]的另一段中也模糊地使用了短语“表达式”:


  如果左操作数不是类类型,则将表达式隐式转换(第4条)为左操作数的cv不合格类型


我认为这在这里也意味着“正确的操作数”,对吗?

这也是我可以找到的赋值运算符效果的唯一定义。我想念什么吗?

最佳答案

该标准通常假定读者有一些常识。

例如,在某些地方它显然使对象和类的概念混为一谈。

这样做是为了避免文本中不必要的冗余而降低可读性,这与DRY原则保持一致:不要重复自己。

关于c++ - 赋值运算符的定义是否存在缺陷?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13982644/

10-12 06:13