Const および非 Const 参照を使用した右辺値参照の受け渡し
C では、const 参照による右辺値の受け渡しは、非 Const 参照で行うときに許可されます。 const 参照ではエラーが発生します。次のコード スニペットを考えてみましょう。
<code class="cpp">void display(const int& a) { cout << a; }</code>
このコードは、リテラルなどの右辺値を使用して呼び出すと、正常にコンパイルされ、正しく機能します。
<code class="cpp">display(5); // OK</code>
ただし、const が削除された場合参照パラメーターから:
<code class="cpp">void display(int& a) { cout << a; }</code>
右辺値を使用してこの関数を呼び出すと、コンパイル エラーが発生します。ここで疑問が生じます: const 参照による右辺値の受け渡しは許可されているのに、非 const 参照では許可されていないのはなぜですか?
一時変数の有効期間の延長
答えは C の方法にあります。式の結果として作成された一時的な値を処理します。右辺値が使用されると、その値を保持するために一時オブジェクトが作成されます。通常、このような一時オブジェクトは使用後すぐに破棄されます。ただし、const 参照にバインドされている場合は、含まれるスコープが終了するまで有効期間が延長されます。
Const 参照の利点
const 参照を使用して渡すrvalues には次の利点があります。
以上が以下に、内容に基づいた質問形式のタイトル オプションをいくつか示します。 * C では、Const 参照では右辺値を渡せるのに、非 Const 参照では渡せないのはなぜですか? * C Rvalue 参照: が渡される場合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。