Destruktor notwenig ?
-
Hallo zusammen.
Ich hatte es immer folgendermaßen verstanden :
Wenn ich ein Objekt nicht mittels new erzeuge
Objekt obj;
dann wird es automatisch nach verlassen des Gültigkeitsbereiches gelöscht.
Wenn ich es dagegen mittels new erzeuge
Objekt *obj = new Objekt();
dann muss ich explizit den Konstruktor aufrufen.
Bitte einfach mal um bestätigung oder korrektur falls ich da was falsch verstanden habe.
Ach ja, die Suchfunktion war außer betrieb... also bitte keine beschwerden
-
Wenn du folgendes meinst ja:
Wenn du es so wie im ersten Listing erzeugst ,wird automatisch speicher allokiert
und bei verlassen des Gültigkeitsbereiches automatisch wieder freigegeben.
Bei deinem 2.Listing musst du den Speicher selbst anfordern und auch wieder selber
freigeben.
new allokiert speicher und ruft den konstruktor auf, delete ruft den destruktor auf
und gibt den Speicher anschließend frei.
-
Jetyt schrieb:
Wenn ich ein Objekt nicht mittels new erzeuge [...] dann wird es automatisch nach verlassen des Gültigkeitsbereiches gelöscht.
Und dieses Löschen besteht aus 2 Schritten: 1) Aufruf des Destruktors 2) Freigabe des Speichers.
Wenn ich es dagegen mittels new erzeuge [...] dann muss ich explizit den Konstruktor aufrufen.
Nein, dann musst du es von Hand löschen, mittels delete. Das beinhaltet wiederum intern den Aufruf des Destruktors und die Freigabe des Speichers.
-
alles klar, danke...
wollte nur nochmal sicher gehen