C では、一時オブジェクトを定数参照に代入する一般的な操作であり、最初はオブジェクトの有効期間について疑問が生じる可能性があります。
質問:
次のコードは有効であり、コンパイラ エラーが発生しないのはなぜですか?
<code class="cpp">string foo() { return string("123"); } int main() { const string& val = foo(); printf("%s\n", val.c_str()); return 0; }</code>
回答:
C は、一時オブジェクトを定数スタックベースの参照にバインドすると、一時オブジェクトの存続期間が参照の存続期間と一致するまで延長されることを明示的に定義しています。このシナリオでは、foo() によって返される一時オブジェクトは main() 関数が終了するまで存続します。
説明:
注:
以上がC で一時オブジェクトを定数参照にバインドすると寿命が延びるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。