在我的C ++ 11标准副本(ISO / IEC 14882:2011(E))中,赋值运算符定义包括:
在简单赋值(=
)中,表达式的值替换了左操作数所引用的对象的值。
这不应该说“正确的操作数的值”而不是“表达式的值”吗?目前,它似乎模棱两可,并且很容易解释为“赋值表达式的值”。
[expr.ass]的另一段中也模糊地使用了短语“表达式”:
如果左操作数不是类类型,则将表达式隐式转换(第4条)为左操作数的cv不合格类型
我认为这在这里也意味着“正确的操作数”,对吗?
这也是我可以找到的赋值运算符效果的唯一定义。我想念什么吗?
最佳答案
该标准通常假定读者有一些常识。
例如,在某些地方它显然使对象和类的概念混为一谈。
这样做是为了避免文本中不必要的冗余而降低可读性,这与DRY原则保持一致:不要重复自己。
关于c++ - 赋值运算符的定义是否存在缺陷?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13982644/