Souvent, c'est une bonne idée d'avoir une classe de base abstraite pour isoler l'interface de l'objet.
Le problème est que la construction de copie, à mon humble avis, est à peu près cassée par défaut en C ++, avec des constructeurs de copie générés par défaut.
Alors, quels sont les pièges lorsque vous avez une classe de base abstraite et des pointeurs bruts dans les classes dérivées?
class IAbstract
{
~IAbstract() = 0;
}
class Derived : public IAbstract
{
char *theProblem;
...
}
IAbstract *a1 = new Derived();
IAbstract a2 = *a1;//???
Et maintenant, désactivez-vous proprement la construction de copie pour toute la hiérarchie? Déclarez que la construction de la copie est privée dans IAbstract
?
Existe-t-il des règles de trois avec des classes de base abstraites?