ホームページ > バックエンド開発 > C++ > C の一時オブジェクトはいつ破棄されますか?

C の一時オブジェクトはいつ破棄されますか?

Mary-Kate Olsen
リリース: 2024-12-16 01:53:09
オリジナル
927 人が閲覧しました

When Are C   Temporary Objects Destroyed?

C における一時オブジェクトの有効期間の保証

C では、式が格納されていない値に評価されると、一時変数が作成されます。名前付き変数に。指定されたコードでは、GetString() 関数呼び出し内で一時 StringBuffer オブジェクトが作成されます:

StringBuffer(mystring).Size(MAXLEN)
ログイン後にコピー

この一時オブジェクトのデストラクターがいつ呼び出されるかという疑問が生じます:

一時オブジェクトの存続期間:

C は、一時オブジェクトの存続期間を保証します。作成された完全な式の終わりまで拡張されます。完全な式は、他の式の一部ではない最も外側の式です。この場合、完全な式は GetString() 関数呼び出し全体です:

GetString(StringBuffer(mystring).Size(MAXLEN), MAXLEN);
ログイン後にコピー

Destruction Timing:

したがって、一時 StringBuffer オブジェクトのデストラクターGetString() 関数が返され、値が評価された が呼び出されます。この動作は、C 標準 12.2「一時オブジェクト」で保証されています。

式テンプレートの重要性:

この生涯保証は、式テンプレートにとって非常に重要です。式内の一時オブジェクトへの参照。たとえば、次の式テンプレート:

e = a + b * c / d
ログイン後にコピー

各一時オブジェクトの有効期間は式全体の終了まで延長されるため、各オペランドによって作成された一時オブジェクトへの参照を保持できます。

以上がC の一時オブジェクトはいつ破棄されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート