我有一个虚拟方法,该方法返回对对象的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;
}
这是最简单的解决方案,但不是很好。
答案 0 :(得分:1)
我有一个虚拟方法,该方法返回对对象的const引用。在派生类之一中,我需要返回一个值。
解决方案:更改您的设计,以便
否则,派生类不符合其继承的接口。
我可以退还副本作为参考吗?
您可以返回对一个对象的引用,该对象是另一个对象的副本。但是您需要将对象(返回的引用)存储在某个地方。