Destruktor auch bei beendigung?
-
Hallo,
wird der Konstruktor auch bei beendigung eines Programms (also zB. bei Linux zur Strg+C oder durch klicken auf das Schliesen-"X") aufgerufen?
mfg Kante
-
Probier es doch einfach aus?
EInfach in einen Distruktor eine Datei schreiben oder eine Textausgabe in die Konsole machen (bei X-Klick schlecht, aber bei strg+C schon eher)Normalerweise werden die Destruktoren nur aufgerufen, wenn das Programm die main() verlässt.
-
Die Destruktoren werden immer aufgerufen, wenn das Programm (bzw. der umgebende Wirkungsbereich) regulär beendet wird - d.h. bei einem return aus der main() oder einem exit()-Aufruf. Wenn du das Programm von außen "killst", wird es sofort abgebrochen und hat keine Zeit mehr für irgendwelche Aufräumarbeiten.
-
Wobei exit nicht die Desktruktoren von automatischen Objekten im aktuellen Block aufruft. Statische Objekte werden aber abgeräumt. Bei Ctrl+C bekommt zumindest unter UNIX ein Programm ein Signal (SIGINTR?) und muss halt entsprechend darauf reagieren. Tut es das nicht, kommt das seiner sofortigen Beendigung mit abort() gleich.