我可以退还副本作为参考吗?

时间:2019-03-31 14:37:56

标签: c++ visual-c++ reference

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

这就是我想要做的(简化的代码,因为它更复杂):

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

我试图通过这种方式使用静态值:

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

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

1 个答案:

答案 0 :(得分:1)

  

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

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

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

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

  

我可以退还副本作为参考吗?

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