首頁  >  文章  >  後端開發  >  C 中臨時物件的銷毀順序是否得到保證?

C 中臨時物件的銷毀順序是否得到保證?

Susan Sarandon
Susan Sarandon原創
2024-11-12 07:49:01883瀏覽

Is the Destruction Order of Temporary Objects Guaranteed in C  ?

C 中臨時物件的銷毀

考慮以下程式碼:

很明顯,輸出會是「一」、「二」、「三」。這就提出了一個問題:所有 C 編譯器都保證這種行為嗎?

根據C 標準,在[class.temporary] 中,它指出:

「臨時物件作為最後一個物件被銷毀評估(詞法上)包含它們創建點的完整表達式的步驟。

需要注意的是,有例外情況一般規則,在[class.temporary] p5、p6 和p7 中概述:

縮短預設構造的臨時的生命週期數組初始值設定項中的物件。
  1. 在陣列複製期間縮短建構函數的預設參數的生命週期。
  2. 透過綁定對臨時物件的引用來延長臨時物件的生命週期。
  3. 延長臨時物件的生命週期。 “for-range-initializer”中臨時物件的生命週期。
  4. 但是,在提供的程式碼中,這些例外情況都不適用,確保臨時物件在各自表達式末尾被銷毀。

以上是C 中臨時物件的銷毀順序是否得到保證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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