Lektion 44:

Destruktor

Jetzt, wo es gelungen ist, daß bei jedem Anlegen eines Stacks automatisch Speicher auf dem heap angelegt wird, muß natürlich noch eingebaut werden, daß dieser auch wieder automatisch gelöscht wird. Dafür gibt es den Destruktor.

 Ein Destruktor ist eine Funktion, die so wie die Klasse heißt, aber vor dem Klassennamen noch eine Tilde '~' trägt.

Der Destruktor der Klasse StackAsVector heißt also ~StackAsVector.

   ~StackAsVector() // Destruktor
   {
      delete[] data;
   };

Jetzt fällt nur noch auf, daß die Konstante

const int STACK_SIZE=5;

keinen Sinn mehr hat. Nach dem Löschen dieser Zeile entsteht eine Fehlermeldung in der push-Funktion.

   void push(int i) // ein Element oben drauflegen
   {
      assert(topIndex<STACK_SIZE-1);// Fehler
      topIndex=topIndex+1;
      data[topIndex]=i;
   };

 Um diese Fehlermeldung zu beseitigen, wird sie einfach auskommentiert (zu einem Kommentar gemacht).

   void push(int i) // ein Element oben drauflegen
   {
// assert(topIndex<STACK_SIZE-1);// Fehler
      topIndex=topIndex+1;
      data[topIndex]=i;
   };

Das erinnert jetzt daran, daß hier noch Bedarf ist, etwas zu ändern.

Übung:

Vervollständigen Sie die Klasse StackAsVector dahingehend, daß die push-Methode eine assertion auslöst, wenn versucht wird, noch etwas in einen vollen Stack einzufügen.

Einsendungen:

Lösungsvorschlag


Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern.
[aktuelle Version] [inhalt] [index]      [Fehlerkorrektur, Verbesserungsvorschlag]

© Volkard Henkel <volkard@normannia.de>, last update: 08/25/00