Konstruktor~Destruktor
-
Hi versuch es mal mit
#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=i; else abc=i; } test::~test(){ //Destruktor cout<<"Destruktor\n"; }; void testfunc() { test x(7); test y; test z(13); cout<<" "<<x.ausgabe()<<"\n"; cout<<" "<<y.ausgabe()<<"\n"; cout<<" "<<z.ausgabe()<<"\n"; } int main() { testfunc(); return 0; }ich glaube die Ausgabe wird nicht mehr richtig über cout und cerr ausgegeben nach dem Programmende. Vieleicht muss man sie auch einfach nur flushen oder so?
Gruß, Daniel_S
-
jetzt geht es auch in cpp super! danke!
-
Daniel_S schrieb:
ich glaube die Ausgabe wird nicht mehr richtig über cout und cerr ausgegeben nach dem Programmende.
Nene:
ISO/IEC 14882:2011 (N3777) schrieb:
§ 3.7.3.3
If a variable with automatic storage duration has initialization or a destructor with side effects, it shall not be destroyed before the end of its block, nor shall it be eliminated as an optimization even if it appears to be unused, except that a class object or its copy/move may be eliminated as specified in 12.8.//edith: Darf doch nicht sein, oder?
-
ISO/IEC 14882:2011 (N3777)
N3337 reicht.
Darf doch nicht sein, oder?
Was genau darf nicht sein? Das Zitat ist selbstverständlich. Vergiss aber nicht as-if. Solange keine beobachtbaren Seiteneffekte verändert werden kann die Implementierung optimieren wie sie lustig ist.
-
Wie waere es, wenn du deinen Code erstmal formatierst. Kann (/will) ja niemand lesen so.
-
Hier hat jemand das selbe Problem http://stackoverflow.com/questions/6494278/destructor-does-not-work
Hast du dein Programm (die erste Version) mal aus der Konsole gestartet wie im Link beschrieben, oder nur so per Doppelklick?
-
Arcoth schrieb:
ISO/IEC 14882:2011 (N3777)
N3337 reicht.
Sag mir bitte nicht, was ich schreiben darf und was nicht ...
Arcoth schrieb:
Darf doch nicht sein, oder?
Was genau darf nicht sein? [...] Vergiss aber nicht as-if. [...]
Das, was der TO beschreibt. Das ist nicht as-if. Aber wahrscheinlich hat er einfach nur die Testumstände ungenau beschrieben.
-
Arcoth schrieb:
ISO/IEC 14882:2011 (N3777)
N3337 reicht.
Aber mit der Lang-Version kann ein Einsteiger doch echt besser selber danach googeln. Sehr fein von Swordfish, die manchmal auch zu nennen.

-
volkard schrieb:
Arcoth schrieb:
ISO/IEC 14882:2011 (N3777)
N3337 reicht.
Aber mit der Lang-Version kann ein Einsteiger doch echt besser selber danach googeln.
N3337 reicht

Swordfish schrieb:
Arcoth schrieb:
ISO/IEC 14882:2011 (N3777)
N3337 reicht.
Sag mir bitte nicht, was ich schreiben darf und was nicht ...
Er hat doch nur geschrieben dass N3337 reicht. Ist doch kein "Verbot" es auszuschreiben.
-
Das, was der TO beschreibt.
Achso, ich dachte du meinst das Zitat.
