在我的C ++ 11标准(ISO / IEC 14882:2011(E))副本中,赋值运算符定义包括:
在简单赋值(
=
)中,表达式的值将替换左操作数引用的对象的值。
这不应该说“右操作数的价值”而不是“表达的价值”吗?目前它似乎含糊不清,很容易被解释为“赋值表达式的价值”。
在[expr.ass]的另一段中,“表达式”一词也含糊不清:
如果左操作数不是类类型,则表达式被隐式转换(第4节)到左操作数的cv-unqualified类型
我认为这也意味着“正确的操作数”,对吧?
这也是我能找到的赋值运算符效果的唯一定义。我错过了什么吗?
答案 0 :(得分:4)
标准通常假设读者有一些常识。
例如,在某些地方,它显然混淆了对象和类的概念。
这样做是为了避免通过文本中不必要的冗余来降低可读性,这符合DRY原则:不要重复自己。
答案 1 :(得分:3)
“左操作数”在两种情况下都是正确的: