Problem mit Destruktor
-
Hallo warum wird hierbei:
info *inf = new info(3);
inf->prozess_infos();Mein Destruktor nicht aufgerufen ?
#include <iostream> using namespace std; class info { public: int zahl; void func ( ); info( int z ); ~info (); }; info :: info ( int z ) : zahl(z) { } info :: ~info() { system("color c"); system("PAUSE"); } void info :: func( ) { cout<<"ok "<<endl; cout<<"zahl: " <<zahl <<endl; } int main() { // So funktioniert es mein Destruktor wird aufgerufen info inf(3); inf.func(); /*/ // Hier wird mein Destruktor aber nicht aufgerufen :( info *inf = new info(3); inf->prozess_infos(); /*/ system("PAUSE"); }
-
Zu jedem new gehört immer ein delete und das delete ruft dann den Destruktor auf. Allerdings solltest du dir sehr genau überlegen, ob du wirklich new brauchst, normalerweise ist dies nämlich nicht der Fall. Und falls doch, nimm lieber einen smarten Pointer wie zum Beispiel std::auto_ptr, die automatisch das delete aufrufen, wenn der Pointer zerstört wird.