我知道常量引用可以延长本地临时变量的寿命。现在我问自己是否可以将这种专有性扩展到临时对象链上,也就是说,我是否可以安全地定义:
std::string const& foo = aBar.getTemporaryObject1().getTemporaryObject2();
我的感觉是,自从第一种方法aBar.getTemporaryObject1()
返回已经是一个临时对象,该属性不适用aBar.getTemporaryObject2()
.
仅当引用直接绑定到该临时对象时,生命周期扩展才适用。
例如,从该引用初始化另一个引用不会进行另一次扩展。
但是,在您的代码中:
std::string const& foo = aBar.getTemporaryObject1().getTemporaryObject2();
你直接绑定foo
的返回值getTemporaryObject2()
,假设这是一个按值返回的函数。这是另一个临时对象的成员函数还是其他什么都没有区别。所以这段代码是可以的。
返回对象的生命周期getTemporaryObject1()
没有扩展,但这并不重要(除非getTemporaryObject2
的返回值包含对该对象的引用或指针或其他内容,但由于它显然是一个std::string
,它不能)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)