0

私のC++11標準(ISO / IEC 14882:2011(E))のコピーでは、代入演算子の定義には次のものが含まれています。

単純な代入(=)では、式の値は、左のオペランドによって参照されるオブジェクトの値を置き換えます。

これは、「式の値」ではなく「右のオペランドの値」と言うべきではありませんか?現時点ではあいまいに見え、「代入式の値」を意味すると簡単に解釈できます。

「式」というフレーズは、[expr.ass]の別の段落でもあいまいに使用されています。

左のオペランドがクラス型でない場合、式は暗黙的に左のオペランドのcv非修飾型に変換されます(第4節)。

ここでも「正しいオペランド」という意味だと思いますよね?

これは、私が見つけることができる代入演算子の効果の唯一の定義でもあります。私は何かが足りないのですか?

4

2 に答える 2

4

標準は、多くの場合、読者側の常識を前提としています。

たとえば、オブジェクトとクラスの概念が混同されているように見える箇所があります。

これは、DRY の原則である Don't Repeat Yourself に従って、テキストの不必要な冗長性による読みやすさの低下を避けるために行われます。

于 2012-12-21T02:36:12.820 に答える
3

「左オペランド」はどちらの場合も正しいです。

  1. 置き換えられる値は、左側のオペランドによって参照されるオブジェクトです。正しいオペランドの値を取得しますが、これは最初の引用で説明されているものの一部ではありません。
  2. 非クラス型に値を割り当てる場合、値はオブジェクトに割り当てられた型、つまり左側のオペランドに明確に変換されます。
于 2012-12-21T00:32:41.613 に答える