003
08.05.2010, 16:00 Uhr
0xdeadbeef
Gott (Operator)
|
Wenn du keinen angibst, erstellt der Compiler (falls nötig) einen für dich, der halt schlicht die Member aufräumt. In der Praxis braucht man Destruktoren hauptsächlich, um Ressourcen wieder freizugeben, bei denen das nicht automatisch geschieht - Heap-Objekte, Sockets, derartige Dinge.
Wobei es für viele dieser Fälle in der Standardbibliothek oder Boost bereits RAII-Klassen gibt, die dir die Arbeit abnehmen. Etwa kann mein letztes Beispiel von oben auch so geschrieben werden:
C++: |
#include <memory>
struct B { B() : p(new A()) { }
std::auto_ptr<A> p; }
|
...der std::auto_ptr wird zerstört, wenn das B-Objekt zerstört wird, und sein Destruktor räumt das Objekt auf dem Heap auf. Es ist auf die Art auch deutlich besserer Stil, aber wir besprachen ja gerade die Mechanismen dahinter. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |