Vas*_*aka 10 c++ temporary lifetime full-expression
可能重复:
C++:临时参数的生命周期?
据说临时变量作为评估完整表达式的最后一步被破坏,例如
bar( foo().c_str() );
Run Code Online (Sandbox Code Playgroud)
临时指针一直存在,直到bar返回,但是为什么
baz( bar( foo().c_str() ) );
Run Code Online (Sandbox Code Playgroud)
是否它仍然存在直到bar返回,或者baz返回意味着完全表达结束在这里,编译器我检查了baz返回后的destruct对象,但我可以依赖它吗?
sbi*_*sbi 11
临时生活直到它们被创造的完整表达结束."完整表达式"是不是另一个表达式的子表达式的表达式.
在baz(bar(...));
,bar(...)
是一个子表达式baz(...)
,而baz(...)
不是任何子表达式.因此,baz(...)
是完整表达式,并且在baz(...)
返回之前不会删除在评估此表达式期间创建的所有临时表达式.
归档时间: |
|
查看次数: |
2384 次 |
最近记录: |