簡體   English   中英

臨時對象銷毀順序的例外情況?

[英]Exceptions to the order of destruction for temporary objects?

閱讀C ++ 0x草案的第1.9 / 14條。 在那里我發現:

在與要評估的下一個全表達式相關聯的每個值計算和副作用之前,對與全表達式相關聯的每個值計算和副作用進行排序.8)

腳注8說

8)如12.2中所述,在評估完整表達式之后,臨時對象的析構函數的零次或多次調用的序列發生, 通常以每個臨時對象的構造的相反順序發生。

“通常”是什么意思? 我認為破壞的相反順序是規則。

我假設他們指的是任何臨時引用的臨時工具。 臨時的生命周期延長到參考的生命周期,而其他臨時工作可能仍然被銷毀。

除了Mark B的答案(這是非常好的)還有另外一種情況:如果你創建一個通過前向迭代器訪問的類型的臨時對象,那么對象(顯然就足夠了)按照迭代器支持的順序創建,並且在相同的順序(不是相反的 - 因為迭代器不支持)。 我不記得是肯定的,但我似乎記得同樣的事情發生(或至少是被允許),即使存在問題的容器支持反向迭代(所以有問題的代碼可以忽略容器/迭代器類型,大概)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM