006
24.03.2004, 14:03 Uhr
ao
(Operator)
|
| Zitat: |
~Dirk23 postete Dennoch bleibt die Frage offen, wann dann ein als private oder protected deklarierte Destruktor implizit aufgerufen wird.
|
Wenn eine Instanz einer davon abgeleiteten Klasse zerstört wird. Und das ist der Trick.
Mit einem protected Destruktor verhindert man die Instanzierung einer Klasse, lässt aber zu, dass es Ableitungen gibt, die instanzierbar sind. Damit macht man die Klasse zur abstrakten Basisklasse. Beispiel:
| C++: |
class CFisch { protected: CFisch () {} ~CFisch () {} };
class CHering : public CFisch { public: CHering () : CFisch () { }
~CHering () { } };
int main (void) { CHering h; CFisch f; /* Fehler */ return 0; }
|
Es gibt keine Instanz von Fisch, alle Fische sind entweder Heringe oder Forellen oder ...
Eine Klasse mit privatem Destruktor kann sich nur selbst instanzieren - typisch z.B. für Singleton-Verhalten.
ao |