我可以返回副本作为参考吗?

Can I return copy as a reference?

本文关键字:参考 返回 副本 我可以      更新时间:2023-10-16

我有一个返回对对象的常量引用的虚拟方法。在其中一个派生类中,我需要返回一个值。使用 const 引用返回类型时是否可以返回副本?

这是我正在尝试做的事情(简化代码,因为它更复杂(:

const Object& method(){
  Object object;
  //...
  return object; //Wrong, returning reference to local variable.
}

我尝试以这种方式使用静态值:

const Object& method(){
  static Object object;
  object = Object();
  //...
  return object;
}

这是最简单的解决方案,但不是很优雅。

我有一个返回对对象的常量引用的虚拟方法。在其中一个派生类中,我需要返回一个值。

解决方案:更改设计,以便

  • 返回类型不是引用或
  • 派生类不需要返回值。

否则,派生类不符合它继承的接口。

我可以返回副本作为参考吗?

可以返回对作为另一个对象副本的对象的引用。但是您需要将对象(您返回其引用(存储在某个地方。