関数の一時引数: 破棄のタイミング
一時オブジェクトを関数の引数として作成する場合、その有効期間を管理することはプログラムの正確性にとって非常に重要です。 C は、これらの一時オブジェクトの有効期間を決定します。
この例では、
class MyClass { MyClass(int a); }; myFunction(MyClass(42));
C は、完全な式の最後に一時 MyClass オブジェクトのデストラクターが呼び出されることを保証します。オブジェクトが属する 。完全な式は通常、セミコロンで終わります。またはその他のステートメント終了文字。この場合、完全な式は関数呼び出し myFunction() の閉じ括弧で終了します。
したがって、一時オブジェクトのデストラクターは、関数呼び出しに続く次のステートメントの実行前に呼び出されると想定できます。 .
一時変数の有効期間を完全な式を超えて延長するには、一時変数を const 参照にバインドすることで可能であることに注意してください。これにより、次の例に示すように、参照の存続期間が参照の存続期間まで延長されます。
MyClass getMyClass(); { const MyClass& r = getMyClass(); // full expression ends here ... } // object returned by getMyClass() is destroyed here
以上がC で関数の一時引数が破棄されるのはいつですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。