class obj {
};
obj func() {
return obj();
}
int main() {
obj& o = func(); // possible?
}
按值返回对象的函数的返回值范围是什么? 也就是说,在这个函数被调用的范围内,是否可以引用返回值对象?
最佳答案
是的,您可以将引用绑定(bind)到函数的返回值。这会将返回对象的生命周期延长到引用的生命周期(如果它是全局的或函数局部的),或者延长到当前函数的末尾(如果引用是数据成员)。
但是,您不能将临时(纯右值)绑定(bind)到非const
左值引用。所以它是这样的:
obj& o = func(); // illegal, because non-const lvalue ref
const obj& o = func(); // fine, lifetime extended
obj&& o = func(); // fine, lifetime extended
关于c++ - 函数返回值的作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37067773/