Destruktor-Aufruf??
-
Sagt ma, so prinzipiell, kann ich während dem Programmlauf (jetz gehn wir mal davon aus, dass ein Objekt weder als Pointer, noch dynamisch vorliegt) den Destruktor aufrufen?
Und jezt auch ohne, dass ich mich innerhalb eines Blocks befinde, beispielsweise: (also jetz kA, ob des überhaupt geht:)class Objects: { //Klassendefinition }; int main () { Objects bla; //und dann halt hier evtl. paar Anweisungen und dann so was wie: bla.~Objects; }
ist so was rein theoretisch möglich, oder krieg ich des bloß dynamisch gebacken?
-
Gehen tut es zumindest.
bla.~Objects();
Ob das für dein Problem eine angebrachte Lösung ist, weiß ich allerdings nicht. Ich bezweifle es sogar, du wirst dir damit ziemlich sicher selbst ins Knie schießen.
-
war ja bloß eine theoretische frage, ob es möglich wäre, so etwas zu tun, ok, dann is ja alles geritzt... naja, irgendwie hätte ich es auch in nen compiler eingeben können und dort ausprobieren aber egal
-
Vorden schrieb:
ist so was rein theoretisch möglich, oder krieg ich des bloß dynamisch gebacken?
geht. aber nach deinem dtor-aufruf wird nochmal der dtor aufgerifen, weil das auto-objekt seinen lebensbereich verläßt. das macht ganz viel aua.
so gehts schon beinahe:
int main () { Objects bla; //und dann halt hier evtl. paar Anweisungen und dann so was wie: bla.~Objects; //a new(&bla) Objects; //b }
nur darf zwischen a und b keine exception fliegen, sonst ist der oben genannte aua-fall doch wieder aktiv.
-
naja gut, aba theoretisch kann ich vor dem Programmende auch meine Objekte von Hand kaputt machen, nur mit dem Destruktor-Aufruf, mehr wollt ich eigentlich gar net wissen, ich stell häufig nur theoretisch gemeinte Fragen
Aber ich mein, wenn ich jetz Objekte in meinem Programm benutze, die nur eine gewisse Lebensdauer haben, kann ich sie damit auch zerstören, oder sie innerhalb von Anweisungsblöcken halten, weil danach gehn se ja eigentlich auch wieder kaputt und werden vom Standard-Destruktor kaputt gemacht