Zusätzlich zum Konstruktor, der automatisch aufgerufen wird, wenn ein Klassenobjekt erstellt wird, wie im vorherigen Abschnitt erwähnt, wird auch automatisch eine Funktion aufgerufen, wenn das Objekt zerstört wird. Sie hat auch den gleichen Namen wie der Klassenname und keinen Rückgabewert. Vor dem Namen steht eine Tilde ~ . Zur Unterscheidung des Konstruktors wird seine Funktion hauptsächlich zum Bereinigen der Nachwirkungen nach der Freigabe des Objekts verwendet. Es ist der Destruktor .
Ebenso wie der Konstruktor und der Klassenname gibt es keinen Rückgabewert. Wenn der Benutzer ihn nicht definiert, generiert das System automatisch einen leeren Destruktor. Sobald es vom Benutzer definiert wurde, wird es automatisch aufgerufen, wenn das Objekt zerstört wird.
Im Gegensatz zu Konstruktoren, obwohl beide öffentliche Typen sind. Die Konstruktion kann überladen werden und hat mehrere Brüder, aber der Destruktor kann nicht überladen werden, aber er kann eine virtuelle Funktion sein und eine Klasse kann nur einen Destruktor haben.
Als nächstes nehmen wir die Klasse Student und fügen weiterhin einen Destruktor hinzu. Gleichzeitig fügen wir Informationen über die aktuelle Klasse sowohl im Konstruktor als auch im Destruktor hinzu, um zu identifizieren, welche Klasse erstellt und zerstört wird :
#include<iostream>#include<Cstring>usingnamespacestd;classStudent{private:intnum;//student number charname[100];//name intscore;//score public:Student(intn,char*str,in ts);~Student();intprint();intSet(intn,char*str,ints);};Student::Student(intn,char*str,ints){num=n;strcpy(name,str); score=s;cout<<num<<<<name<<<<sco re<<;cout<<Constructor<<endl;}Student::~Student(){cout<<num<<<<name<<<<score<<;cout<<destructor<<endl;}intStudent:: print(){cout<<num<<<<name<<<<sco re<<endl;return0;}intStudent::Set(intn,char*str,ints){num=n;strcpy(name,str);score=s;}intmain(){StudentA(100,dot,11) ;StudentB(101,cpp,12);return0;}
Bitte verstehen Sie den Konstruktor und Destruktor im obigen Code sorgfältig und beachten Sie, dass in der Hauptfunktion zwei Objekte A und B definiert sind, und testen Sie sie auf Ihrem eigenen Computer. Sie können sehen, dass der laufende Effekt wie folgt ist:
Sie können sehen, dass die Reihenfolge beim Aufrufen der Konstruktoren und die Reihenfolge beim Aufrufen der Destruktoren der Objekte A und B völlig entgegengesetzt sind! Der Grund dafür ist, dass die Objekte A und B beide lokale Objekte sind und auch im Stapelbereich gespeichert werden. Sie folgen auch der Reihenfolge „First in, last out“!
Bitte testen und verifizieren Sie die Ergebnisse unbedingt persönlich!