首頁 > 後端開發 > C++ > C 臨時物件何時被銷毀?

C 臨時物件何時被銷毀?

Mary-Kate Olsen
發布: 2024-12-16 01:53:09
原創
926 人瀏覽過

When Are C   Temporary Objects Destroyed?

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

在C 中,當表達式計算結果為未儲存的值時,將建立臨時變數在命名變數中。在給定的程式碼中,在GetString() 函數呼叫中建立了一個臨時StringBuffer 物件:

StringBuffer(mystring).Size(MAXLEN)
登入後複製

何時呼叫此臨時物件的析構函數:

臨時物件的生命週期:

C 保證臨時物件的生命週期延長到創建它的完整表達式的末尾。完整表達式是不屬於任何其他表達式的最外層表達式。在這種情況下,完整表達式是整個GetString() 函數呼叫:

GetString(StringBuffer(mystring).Size(MAXLEN), MAXLEN);
登入後複製

銷毀時機:

因此,臨時StringBuffer 物件的析構函數將在 GetString() 函數傳回並計算值之後呼叫。此行為由 C 標準 12.2「臨時對象」保證。

表達式範本的意義:

此生命週期保證對於表達式範本至關重要,它可以保存對表達式中臨時物件的引用。例如,以下表達式範本:

e = a + b * c / d
登入後複製

可以保留對每個運算元所建立的臨時物件的引用,因為每個臨時物件的生命週期都會延長到整個表達式的末端。

以上是C 臨時物件何時被銷毀?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板