当返回对临时对象成员的 const 引用时会发生什么;该对象的生命周期是多少;
例如
struct temp
{
T m_mine;
static temp make()
{
return temp();
}
};
T const & foo()
{
return temp::make().m_mine;
}
c++98 和 c++11 的行为是什么?
最佳答案
在这种情况下,对象或裁判类型的常量性并不重要:它只是返回对当时已不复存在的对象的引用。然后使用引用是未定义的行为。
同样,如果您将成员引用绑定(bind)到 const,绑定(bind)到一个对象,这不会延长裁判的生命周期。
对象生命周期延长仅适用于将本地引用绑定(bind)到对象的情况,并且仅适用于引用const
对象或右值引用的情况。
我写这篇文章时的示例代码有几个问题。请仅发布真实代码(尽可能)。它应该被粘贴,而不是重新输入。
(此外,由于现在至少有 2 个答案涉及代码问题,因此在不改变答案的上下文并因此使它们无效的情况下更正它为时已晚。所以重要的是要获得原始帖子中的代码正确。下一个 SO 问题值得牢记。)
关于c++ - 返回对临时对象成员的 const 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33186098/