gpt4 book ai didi

c++ - const引用是否延长了临时对象返回的临时对象的生命周期?

转载 作者:太空宇宙 更新时间:2023-11-04 15:14:44 25 4
gpt4 key购买 nike

我知道 const 引用可以延长本地临时文件的生命周期。现在我问自己是否可以在临时对象链上扩展这种礼节,也就是说,我是否可以安全地定义:

std::string const& foo = aBar.getTemporaryObject1().getTemporaryObject2();

我的感觉是,由于第一个方法 aBar.getTemporaryObject1() 返回的已经是一个临时对象,因此 aBar.getTemporaryObject2() 不适用.

最佳答案

仅当引用直接绑定(bind)到该临时对象时才适用生命周期延长。

例如,从该引用初始化另一个引用不会执行另一个扩展。

但是,在您的代码中:

std::string const& foo = aBar.getTemporaryObject1().getTemporaryObject2();

您直接将 foo 绑定(bind)到 getTemporaryObject2() 的返回值,假设这是一个按值返回的函数。这是否是另一个临时对象的成员函数或其他什么都没有关系。所以这段代码是可以的。

getTemporaryObject1() 返回的对象的生命周期没有延长,但这无关紧要(除非 getTemporaryObject2 的返回值包含对该对象的引用或指针,或其他东西,但由于它显然是一个 std::string,所以它不能)。

关于c++ - const引用是否延长了临时对象返回的临时对象的生命周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36982630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com