RvalueとLvalue参照
メニューを表示するにはスワイプしてください
L値とR値
C++では、L値とR値は式の基本的な2つのカテゴリです。
- L値:名前を持ち、代入文の左側に現れることができるオブジェクトまたはメモリ領域
- R値:一時的な値やリテラルで、永続的なメモリアドレスを持たず、通常は代入文の右側に現れる
例:
int x = 10; // x is an lvalue, 10 is an rvalue
x = 20; // x (lvalue) can be assigned a new value (rvalue 20)
L値参照
L値参照は、既存の変数(L値)への別名を作成するためのものです。宣言には単一の & を使用します。
int a = 5;
int& ref = a; // ref is an lvalue reference to a
ref = 8; // changes the value of a to 8
- L値参照はR値(一時的な値やリテラル)にはバインドできません。
R値参照
R値参照は、一時的な値(R値)への参照をバインドするためのものです。宣言には && を使用します。
int&& temp = 42; // temp is an rvalue reference bound to the temporary value 42
- R値参照はL値(名前付き変数)にはバインドできません。
- リソースのコピーではなくムーブによる最適化など、コードの効率化に役立ちます。
参照のバインディング規則
- L値参照(
&)はL値にバインドされます。 - R値参照(
&&)はR値にバインドされます。
例:
int x = 7;
int& lref = x; // valid: lref binds to lvalue x
// int& lref2 = 8; // error: cannot bind lvalue reference to rvalue
int&& rref = 8; // valid: rref binds to rvalue 8
// int&& rref2 = x; // error: cannot bind rvalue reference to lvalue
これらの概念を理解することで、特にムーブセマンティクスのような最新機能を扱う際に、より安全で効率的なC++コードを書くことができます。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 1. 章 12
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 1. 章 12