considerar:C++: ¿Podrían los constructores de copias polimórficas funcionar?
class A
{
public:
A(int val) : m_ValA(val) {}
A(const A& rhs) {}
int m_ValA;
};
class B : public A
{
public:
B(int val4A, int val4B) : A(val4A), m_ValB(val4B) {}
B(const B& rhs) : A(rhs), m_ValB(rhs.m_ValB) {}
int m_ValB;
};
int main()
{
A* b1 = new B(1, 2);
A* b2 = new A(*b1); // ERROR...but what if it could work?
return 0;
}
Would C++ romperse si "nueva A (b1)" fue capaz de resolver a la creación de una nueva copia B y devolver una A?
¿Esto podría ser útil?
1, pero también me gustaría añadir un destructor virtual a la clase;) –
Fue realmente un experimento mental. Y aunque esta es la forma estándar de implementar constructores de copia virtuales, tenía curiosidad por saber por qué el lenguaje no proporciona una forma estandarizada de hacerlo. – 0xC0DEFACE
El retorno covariante es mejor: B * B :: Clon() –