函数返回值的范围

姆克莫斯塔法
class obj {
};

obj func() {
    return obj();
}

int main() {
   obj& o = func(); // possible?
}

按值返回对象的函数的返回值的范围是什么?换句话说,在调用此函数的范围内,是否可以引用值对象返回的值?

Angew不再为SO感到骄傲

是的,您可以将引用绑定到函数的返回值。这会将返回的对象的生存期延长到引用的生存期(如果是全局或局部函数),或者延长到当前函数的末尾(如果引用是数据成员)。

但是,您不能将临时(prvalue)绑定到非const左值引用。就像这样:

obj& o = func(); // illegal, because non-const lvalue ref
const obj& o = func(); // fine, lifetime extended
obj&& o = func(); // fine, lifetime extended

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章