首頁 >後端開發 >C++ >函數呼叫中何時呼叫臨時 C 物件的析構函數?

函數呼叫中何時呼叫臨時 C 物件的析構函數?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-13 11:57:14195瀏覽

When is a Temporary C   Object's Destructor Called in a Function Call?

C 中臨時物件的保證生命週期

問題:

何時被物件呼叫?在函數呼叫中建立但不用作參數?具體來說,請考慮以下程式碼:

答案:

臨時StringBuffer 物件的析構函數在 呼叫GetString 之後呼叫返回。

根據C 標準(12.2 臨時物件),臨時物件的生命週期結束於完整表達式的結尾,即(a) 本身不作為操作數出現在另一個完整表達式中(類別物件的構造中除外),且(b) 不是a 的一部分帶括號的表達式。

在範例程式碼中,對 GetString 的呼叫是完整表達式,並且在該表達式中建立臨時 StringBuffer 物件。因此,臨時物件的生命週期在 GetString 呼叫返回後結束。

此生命週期保證確保臨時物件保持有效,直到不再需要為止。它允許表達式模板保存對臨時物件的引用,因為臨時物件將持續到表達式被完全計算為止。

以上是函數呼叫中何時呼叫臨時 C 物件的析構函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn