next up previous contents index
Next: Vordefinierte Klassen: Die C++ Up: Klassen Previous: Initialisierung Wertzuweisung

Destruktoren

  Der Destruktor (``es kann nur einen geben'') einer Klasse X heißt ~X. Er wird jedesmal aufgerufen, wenn ein Objekt der Klasse X gelöscht wird:

Der Destruktor hat keinen Ergebnistyp und keine Parameter.

Beispiel:

    class string
    {   char *s;
      public:
        string(char *p) : s(p)
          { cout << "create " << s << "\n";}
        ~string() 
          {cout << "destroy " << s << "\n";}
    };
    
    string g("global");

    int main()
    {   string s1("hans");
        string s2("otto");
    } /* main */

erzeugt die Ausgabe

    create global
    create hans
    create otto
    destroy otto
    destroy hans
    destroy global

Destruktoren werden zum Freigeben dynamisch allokierten Speichers verwendet:

    class string
    {   char *s;
      public:
        string(char *p) 
        { s = new char[strlen(p)+1];
          strcpy(s,p);
          cout << "create " << s << "\n";}      
        ~string() 
        { cout << "destroy " << s << "\n";
          delete [] s;
        }
    };

Bei fehlenden Benutzer-definierten Copy-Konstruktoren kann es Probleme geben:

   

    int main()
    {   string s1("Hans");
        string s2=s1;
    } /* main */

erzeugt folgende Ausgabe:

   create Hans
   destroy Hans
   destroy Hans    // "Hans" ist schon freigegeben

tex2html_wrap5189


next up previous contents index
Next: Vordefinierte Klassen: Die C++ Up: Klassen Previous: Initialisierung Wertzuweisung

Peter Pfahler, 1997