Spesso è una buona idea avere una classe base astratta per isolare l'interfaccia dell'oggetto.
Il problema è che la costruzione di copie, IMHO, è praticamente interrotta di default in C ++, con i costruttori di copie generati di default.
Quindi, quali sono i trucchi quando hai una classe base astratta e puntatori raw nelle classi derivate?
class IAbstract
{
~IAbstract() = 0;
}
class Derived : public IAbstract
{
char *theProblem;
...
}
IAbstract *a1 = new Derived();
IAbstract a2 = *a1;//???
E ora disattivi in modo pulito la costruzione della copia per l'intera gerarchia? Dichiara la costruzione della copia come privata in IAbstract
?
Esistono regole di tre con classi di base astratte?