Hallo zusammen,
ich habe eine Elternklasse, von der ich mehrere Kindklassen ableite.
Die Kindklassen haben alle eine unterschiedliche Anzahl an Variablen,
d.h. ihre Instanzen belegen unterschiedlich viel RAM.
Mein Wunsch ist es, der Einfachheit halber möglichst oft über einen
Elternklassen-Pointer auf die Instanzen der unterschiedlichen
Kindklassen zuzugreifen.
Beim Anlegen einer Kindklassen-Instanz muss ich eine
Einzelfallbehandlung machen:
1 | elternklasse_t* eltklaptr;
|
2 | if (kindklassentyp = 0) { eltklaptr = new kindklasse_0_t; }
|
3 | else if (kindklassentyp = 1) { eltklaptr = new kindklasse_1_t; }
|
4 | else if (kindklassentyp = 2) { eltklaptr = new kindklasse_2_t; }
|
5 | ...
|
Dass Freigeben einer Kindklassen-Instanz würde ich gerne
vereinheitlichen:
Nun habe ich im Netz folgendes gefunden:
Ist der Destructor der Elternklasse virtuel, wird bei delete mit
Elternklassenzugriff die komplette Instanz (Elternteil und Kindteil)
freigegeben.
Ist der Destructor der Elternklasse aber nicht virtuel, wird bei delete
mit Elternklassenzugriff nur der Elternteil der Instanz freigegeben.
Das würde ja bedeutet, dass der Kindteil der Instanz als Speicherleiche
zurückbleibt. Ist das richtig?