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中文網其他相關文章!