0

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

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

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

在 [expr.ass] 的另一段中,“表达式”一词也有歧义:

如果左操作数不是类类型,则表达式被隐式转换(第 4 条)为左操作数的 cv 非限定类型

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

这也是我能找到的赋值运算符效果的唯一定义。我错过了什么吗?

4

2 回答 2

4

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

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

这样做是为了避免由于文本中不必要的冗余而降低可读性,符合 DRY 原则:不要重复自己。

于 2012-12-21T02:36:12.820 回答
3

“左操作数”在这两种情况下都是正确的:

  1. 被替换的值是左操作数引用的对象。它将获得正确操作数的值,但这不是第一个引用描述的一部分。
  2. 将值分配给非类类型时,该值清楚地转换为分配给对象的类型,即左操作数。
于 2012-12-21T00:32:41.613 回答