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 🙂


Anmelden zum Antworten