C での一時オブジェクトの破棄
C での一時オブジェクトはいつ破棄されますか?この疑問は、次のコード スニペットを検討するときに生じます。
#include <iostream> struct Foo { const char* m_name; ~Foo() { std::cout <p>このコードは、「one」、「two」、および「three」を出力します。一時オブジェクトが作成直後に破棄された場合、この動作は予期しないように見えるかもしれません。しかし、そうではありません。</p> <p>[class.temporary] p4 で定義されている一時オブジェクトは、それらが作成されたポイントを含む完全な式の終了時に破棄されます。上の例では、完全な式が main 関数全体であるため、一時的な Foo オブジェクトはセミコロンで破棄されます。</p> <p>この動作は標準で保証されており、指定されたコードの出力が C コンパイラ間で一貫したものになります。ただし、一般規則には例外がいくつかあります。</p> <ul> <li>配列初期化子でデフォルトで構築された一時オブジェクトの有効期間が短くなる可能性があります。</li> <li>配列のコピー中のコンストラクターへのデフォルト引数にも、 </li> <li>一時オブジェクトへの参照をバインドすると、その有効期間が延長されます。 </li> <li>for-range-initializer 内の一時オブジェクトの有効期間は延長されます。</li> </ul></iostream>
以上がC の一時オブジェクトはいつ破棄されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。