Muchas veces es una buena idea tener una clase base abstracta para aislar la interfaz del objeto.
El problema es que la construcción de copia, en mi humilde opinión, está bastante rota por defecto en C ++, y los constructores de copia se generan de forma predeterminada.
Entonces, ¿cuáles son las trampas cuando tienes una clase base abstracta y punteros sin procesar en clases derivadas?
class IAbstract
{
~IAbstract() = 0;
}
class Derived : public IAbstract
{
char *theProblem;
...
}
IAbstract *a1 = new Derived();
IAbstract a2 = *a1;//???
¿Y ahora deshabilita limpiamente la construcción de copia para toda la jerarquía? ¿Declarar copia de construcción como privada en IAbstract
?
¿Hay alguna regla de tres con clases base abstractas?