将函数的返回值存储在引用 C 中

新手上路,请多包涵

将对象的返回值存储在引用中是否有效?

 class A { ... };
A myFunction()
{
    A myObject;
    return myObject;
} //myObject goes out of scope here

void mySecondFunction()
{
    A& mySecondObject = myFunction();
}

是否可以这样做以避免将 myObject 复制到 mySecondObject? myObject 不再需要并且应该与 mySecondObject 完全相同,因此理论上将对象的所有权从一个对象传递给另一个对象会更快。 (这也可以使用 boost 共享指针,但这会产生共享指针的开销。)

提前致谢。

原文由 Ruud 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 321
1 个回答

不允许将临时对象绑定到非 const 引用,但如果您将引用设为 const,您会将临时对象的生命周期延长到引用,请参阅 此 Danny Kalev 帖子

简而言之:

 const A& mySecondObject = myFunction();

原文由 Alexander Torstling 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题