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 サイトの他の関連記事を参照してください。