Destruktor-FRage
-
#include <iostream> using namespace std; class Test { private: int abc; public: Test(int i = 9); //Konstruktor ~Test(); //Destruktor int ausgabe() {return abc;} }; Test::Test(int i) //Konstruktor { cout << "Konstruktor\n"; if(i > 12) abc = 12; else abc = i; } Test::~Test() //Destruktor { cout << "Destruktor\n"; } int main() { Test x(7); Test y; Test z(13); cout << " " << x.ausgabe() << "\n"; cout << " " << y.ausgabe() << "\n"; cout << " " << z.ausgabe() << "\n"; fflush(stdin); cin.peek(); return 0; }Wie rufen sich Konstruktor und Destruktor in diesem Programm auf???
Sie werden ja in main() nicht angerührt, oder doch??
-
Ania87 schrieb:
int main() { Test x(7);// ctor Test y; // ctor mit i=9 Test z(13);// ctor cout << " " << x.ausgabe() << "\n"; cout << " " << y.ausgabe() << "\n"; cout << " " << z.ausgabe() << "\n"; fflush(stdin); cin.peek(); return 0;//dtor bei verlassen des gültigkeitsbereiches der "Test"s. also //beim verlassen der main }Wie rufen sich Konstruktor und Destruktor in diesem Programm auf???
Sie werden ja in main() nicht angerührt, oder doch??
-
Hallo,
durch das Erzeugen eines Objekts wird dessen Konstruktor aufgerufen:
Test x(7); // mit dem Wert 7 Test y; // mit dem Wert 9, da Defaultparameter Test z(13); // mit dem Wert 13Bei der Zerstörung wird der Destruktor aufgerufen. Zerstört wird dein Objekt, nach der letzten }.
-
Ok danke und wozu soll das jetzt gut sein??
-
Tach,
guck hier:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-128143.html
-
Hallo
der Konstruktor ist (u.a.) dazu da, die Membervaribalen der Klasse zu initialiseren.
Der Destruktor ist (u.a.) dazu du, mit new erzeugten, logisch zu der Klasse zu gehörenden Speicher freizugeben.
In deinem Minimalen Beispiel ist kein Destruktor nötig.bis bald
akari