Copiando un objeto polimórfico en C ++

Tengo clase baseBase de donde se derivaDerived1, Derived2 yDerived3.

He construido una instancia para una de las clases derivadas que almaceno comoBase* a. Ahora necesito hacer una copia profunda del objeto que almacenaré comoBase* b.

asta donde yo sé, la forma normal de copiar una clase es usar constructores de copia y sobrecargaroperator=. Sin embargo, ya que no sé sia es de tipoDerived1, Derived2 oDerived3, No puedo pensar en una forma de usar el constructor de copia ooperator=. La única forma en que puedo pensar para hacer que este trabajo funcione limpiamente es implementar algo como:

class Base
{
public:
  virtual Base* Clone() = 0;

};

y el implementoClone in en la clase derivada como en:

class Derivedn : public Base
{
public:
  Base* Clone() 
  {
    Derived1* ret = new Derived1;
    copy all the data members
  }
};

Java tiende a usarClone bastante ¿hay alguna forma más de C ++ de hacer esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta