1. ホーム
  2. c++

[解決済み] エラー: 'int' 型の rvalue からの 'int&' 型の非恒等式参照の無効な初期化

2022-01-29 18:55:35

質問

形が違う。

int &z = 12;

正しい形式です。

プレ int y; int &r = y;

質問 :
なぜ最初のコードが間違っているのですか?は何ですか? 意味 " タイトルのエラーの内容は?

解決方法は?

C++03 3.10/1には、"すべての式はlvalueかrvalueのどちらかである。"とあります。 lvalueness対rvaluenessは、オブジェクトではなく、式の特性であることを覚えておくことが重要です。

L値は、1つの式を越えて存続するオブジェクトの名前です。 例えば obj , *ptr , {コード そして {コード {コード はすべてl値である。

R値は一時的なもので、その中の完全な式の終わりで(「セミコロンで」)消滅する。 たとえば、次のようになります。 ptr[index] , ++x , {コード そして {コード {コード はすべてr値です。

address-of演算子は、その「オペランドがlvalueであること」を要求しています。ある式のアドレスを取ることができれば、その式はlvalueであり、そうでなければrvalueとなるのです。

1729