对派生类执行深层复制

时间:2012-02-03 22:28:42

标签: c++ polymorphism deep-copy

这最近一直困扰着我。假设我有一个基类Base。如果我在Base之上有多个派生类,例如DerivedA和DerivedB,那么深层副本就会变得很痛苦。

OtherClass(const OtherClass & _rhs)
{
    //I have a list of Base *, now I must assign a class id to each derived class to properly create a new one.
    //...
}

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:9)

您应该在Base类中定义克隆方法:

virtual Base * clone() const = 0;

每个派生类都实现克隆方法:

virtual DerivedA * clone() const {
    return new DerivedA(*this);
}

然后你的OtherClass必须迭代并在列表中Base*的每个实例上调用clone方法。