Muitas vezes, é uma boa ideia ter uma classe base abstrata para isolar a interface do objeto.
O problema é que a construção de cópias, IMHO, é praticamente quebrada por padrão em C ++, com os construtores de cópias sendo gerados por padrão.
Então, quais são as dicas quando você tem uma classe base abstrata e ponteiros brutos nas classes derivadas?
class IAbstract
{
~IAbstract() = 0;
}
class Derived : public IAbstract
{
char *theProblem;
...
}
IAbstract *a1 = new Derived();
IAbstract a2 = *a1;//???
E agora você desativa de maneira limpa a construção de cópias para toda a hierarquia? Declarar construção de cópia como particular em IAbstract
?
Existem regras de três com classes base abstratas?