c++ - 函数返回值的作用域

标签 c++ scope

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/

相关文章:

c++ - 多个 vs 项目中的堆栈大小

c++ - 如何在构造函数中初始化 "ostream &out",使用 "char *filename"

c++ - 错误 LNK2019 fatal error C

c++ - GCC模板参数模板

c# - using 的正确范围

javascript - 了解 javascript 函数、作用域和闭包

c++ - 如何调整 QMainWindow 上的窗口装饰大小?

javascript - Jquery $.post() 变量作用域

javascript - 在angularjs中我们如何实现基于其他对象的对象更新?

jquery - 如何使函数内部的变量值更新以在顶级变量上生效