![](/img/trans.png)
[英]Bind a valid class object pointer to boost::function<>fn. What may happen if invoking the `fn` after the object has been destoryed?
[英]When this temporary object is destoryed?Before entry the function or after the function returned?
当这个临时对象( CTest()
)被销毁时?在进入函数之前( fooFunc
)还是在函数( fooFunc
)返回之后?
我知道下面的代码确实不正确(谢谢,asmmo。)。 原因是:
“这个想法是 function 采用非常量引用参数表示它想要修改参数并允许它 go 返回给调用者。临时这样做是没有意义的,很可能是错误。”
对于这个问题的任何提示,我将不胜感激。
class CTest;
void fooFunc(CTest&){};
fooFunc(CTest());
临时对象在完全表达结束时被销毁。 在您的情况下,这意味着CTest()
将在fooFunc
返回后被销毁。
请注意,您的示例格式错误。 fooFunc
的参数应该是右值引用或 const 左值引用。 假设您使用 Visual Studio。 传递/W4
标志,因此 VS 将发出警告,说明您使用了非标准扩展(因此您知道您使用的东西不会为其他编译器编译)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.