Const 参照による右辺値の保持: A C パズル
C では、通常の参照とは異なり、 const 参照による右辺値 (一時オブジェクト) の受け渡しが許可されています。 。次のプログラムを考えてみましょう。
<code class="cpp">void display(const int& a) { cout << a; } int main() { int a = 5; display(a); // Works with an lvalue display(5); // Also works with an rvalue return 0; }</code>
このプログラムでは、参照が const としてマークされている場合でも、左辺値と右辺値の両方を表示関数に渡すことができます。通常、const 参照は左辺値の保存に関連付けられているため、この動作は不可解です。
Const 参照のライフタイム拡張
この動作を理解する鍵はセマンティクスにあります。 C の const 参照の。 const 参照は、参照されるオブジェクトの存続期間を、それを含むスコープが終了するまで延長します。右辺値の場合、これにより、const 参照がスコープ外になるまで、一時オブジェクトの破棄が効果的に防止されます。
例: 右辺値の有効期間を延長する
たとえば、display(5) が呼び出されると、次のことが発生します。
これは、const 参照が右辺値を指し続け、たとえ関数が存在していたとしても存在し続けることができる方法を示しています。そうしないとすぐに破棄されます。
以上がC で Const 参照によって右辺値を渡すことができるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。