Neben den Konstruktoren gibt es auch noch das Gegenstück: die
Destruktoren. Sie werden aufgerufen, wenn der Compiler das Objekt
löscht, d.h. dann, wenn er den zugehörigen Speicherplatz
freigibt. Sie dienen zum einen dazu, Speicherplatz, den der
Konstruktor angefordert hat wieder freizugeben (siehe Kapitel Pointer
), können aber auch andere Funktionen wie z.B. das Schließen
von Dateien ausführen. Er wird ähnlich wie der Konstruktor
auch als Methode deklariert, die den Namen der Klasse trägt -
nur hier steht noch eine Tilde vor dem Namen (
~
). Diese
Tilde steht als Symbol für die Komplementierung - der Destruktor
ist also auch schreibtechnisch das Gegenteil des Konstruktors.
Üblicherweise steht der Destruktor direkt unter den
Konstruktoren, er hat niemals Parameter oder einen Rückgabewert.
Ein Destruktor in der vorgestellten Klasse zum Zählen von Gästen könnte einen Gast wieder abmelden, d.h. die Anzahl der Gäste verringern. Dazu müßte in der Deklaration der Klasse auch der Destruktor deklariert werden, in dem man folgende Zeile nach dem Konstruktor ergänzt:
~gast();
Eine mögliche Implementierung sähe dann so aus:
gast::~gast() { if (zaehler>0) { zaehler--; cout<<"Auf Wiedersehen!"<<endl; } else cout<<"Schwerer Fehler!!"<<endl; //sollte nicht passieren } //~gast()