结构存在于函数/方法中

时间:2011-03-09 15:05:52

标签: c++

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

create()创建一个struct实例mystruct s() 然后方法execute()返回一些东西。

结构在执行函数的整个时间内是否继续存在或是否已发布?

4 个答案:

答案 0 :(得分:3)

直到函数返回为止。

答案 1 :(得分:2)

您可以放心,只要尚未评估创建它的完整表达式,临时对象就会存在,这意味着在a_function返回之前,您的结构将“存在”。

答案 2 :(得分:1)

临时struct对象存在,直到完整表达式结束。这意味着直到a_function返回。

参见C ++ 03中的12.2。

答案 3 :(得分:0)

除非有一些延长生命周期的特殊条件,否则表达式中创建的任何临时值都将在完整表达式的末尾被销毁。这是在分号。

您甚至可以确保按照与创建相反的顺序销毁多个临时对象。