制作抽象基类的对象的副本

wro*_*ame 5 c++ inheritance pointers derived-class deep-copy

如果我有一个指向从抽象基类派生的对象的指针(因此我无法创建该类的新对象),并且我希望对所述对象进行深层复制,那么是否有更简洁的方法来实现让抽象基类创建一个新的纯虚copy函数,每个继承类必须实现?

Dan*_*her 10

不,但该copy方法不一定很痛苦:

class Derived : public Base
{
  public:
    Base *copy() const
    {
        return new Derived(*this);
    }
};
Run Code Online (Sandbox Code Playgroud)

(假设您已经有一个复制构造函数,如果您需要深层复制,那么您将拥有).