2011-03-09 40 views
2

STRUCT存在於功能/方法

a_function(mystruct::create().execute()); 

create()創建如同mystruct s() 然後​​返回東西方法結構的實例。

該結構是否繼續存在的整個時間該函數執行或釋放?

+0

返回「某物」? – 2011-03-09 15:10:58

+0

出於好奇,你爲什麼需要知道?如果你的代碼依賴於這個,它可能不是很好。 – 2011-03-09 15:11:33

+1

@ Space_C0wb0y:胡說八道。瞭解對象的生命週期通常非常重要,特別是當它們是臨時對象時。如果你不這樣做,你最終會動輒用一隻手動態分配所有東西,並在任何地方留下內存泄漏。這是一個很好的問題。 – 2011-03-09 15:13:42

回答

1

臨時對象struct存在,直到完整表達式結束。這意味着直到a_function已經返回。

請參閱12.2 C++ 03。

3

直到函數返回時才存在。

2

只要尚未評估創建完整表達式時,您可以放心臨時對象存在,這意味着您的結構將「存在」,直到a_function已返回。

0

除非有一些延長壽命的特殊條件,否則在表達式中創建的任何臨時對象都將在完整表達式的末尾被銷燬。這裏是分號。

你甚至可以確定,多個臨時對象將一如既往地以與創建相反的順序銷燬。