首页 > 解决方案 > 我可以退回副本作为参考吗?

问题描述

我有一个返回对对象的 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;
}

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

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

解决方案


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

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

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

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

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

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


推荐阅读