说
a_function(mystruct::create().execute());
create()
创建一个struct实例mystruct s()
然后方法execute()
返回一些东西。
结构在执行函数的整个时间内是否继续存在或是否已发布?
答案 0 :(得分:3)
直到函数返回为止。
答案 1 :(得分:2)
您可以放心,只要尚未评估创建它的完整表达式,临时对象就会存在,这意味着在a_function
返回之前,您的结构将“存在”。
答案 2 :(得分:1)
临时struct
对象存在,直到完整表达式结束。这意味着直到a_function
返回。
参见C ++ 03中的12.2。
答案 3 :(得分:0)
除非有一些延长生命周期的特殊条件,否则表达式中创建的任何临时值都将在完整表达式的末尾被销毁。这是在分号。
您甚至可以确保按照与创建相反的顺序销毁多个临时对象。