Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ RvalueとLvalue参照 | セクション
C++のポインタと参照

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に質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  12
some-alt