Destruktoren (1/2)

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()