Eigenen Destuktor definieren
-
Morgen!
Ist es möglich einen eigenen Destruktor mit Parametern zu definieren, denn man dann so aufrufen könnte:
delete ptrKlasse(39, "hallo", 342);
Kann das gerade nicht testen
-
destruktoren haben keine parameter. Zumindest habe ich das noch nie gesehen.
warum zerstörst du die objekte nicht im destruktor selbst???~desktruktor() { delete[] this->namen; delete this->zahl; // etc. }
-
Weil ich wie gesagt etwas übergeben muss!
Deswegen habe ich momentan eine Delete(Parameter)-Methode programmiert, nur ist das unschön und ich würde das gerne in den Destruktor verlegen.
-
Hallo,
für was brauchst du die parameter?
du hast doch alle infos in der klasse selbst die du zum löschen brauchst.
und was neues zu übergeben bringt ja auch nichs da die klasse ja gleich gelöscht wiert.MFG TaccoGo
-
eine Klasse löscht nichts anderes, nur sich selbst, komplett und unwiederruflich
Das ist die aufgabe des destruktors. wenn du ihn dafür verwenden willst, bestimmte teile der Klasse zu erhalten(mit new erstelltes zeugs) weil sie von einer anderen Klasse noch verwendet werden, dann benutz so sachen wie shared pointer.
-
Also gibt es definitiv keinen Destruktor mit Parametern (Sinn und Zweck jetzt außen vor gelassen )?
-
Destruktor schrieb:
Also gibt es definitiv keinen Destruktor mit Parametern (Sinn und Zweck jetzt außen vor gelassen )?
Nein, gibt es nicht.
Wenn du daten nur freigeben willst, falls sie nicht mehr
benutzt werden, dann schau dir mal Rerencecounting an,
oder du musst dann doch noch eine Destroy Funktion schreiben.Devil
-
Troll...
-
Destruktor schrieb:
Also gibt es definitiv keinen Destruktor mit Parametern (Sinn und Zweck jetzt außen vor gelassen )?
Einen mit delete aufrufbaren Destructor gibt es nicht. Aber wenn du es so willst kannst du dir ja eine eigene Methode Destroy( blubber) einbauen und diese dann aufrufen
Foo foo; foo.Destroy("hallo");
und Foo::Destroy enthält dann ->
delete this;
<- ist aber keine Schöne Variante
-
Das hat überhaupt keinen Sinn.
-
Genau so habe ich es bisher gemacht, dann wird es wohl auch so bleiben.
@all schrieb:
Das hat überhaupt keinen Sinn.
Nur weil du den Sinn nicht kennst heißt es nicht das es keinen gibt. Hauptsache rumtrollen.
*fisch werf*
-
Destruktor schrieb:
Ist es möglich einen eigenen Destruktor mit Parametern zu definieren, denn man dann so aufrufen könnte:
delete ptrKlasse(39, "hallo", 342);
Kann das gerade nicht testen
Zuerst ein Denkfehler: Du setzt delete und Destruktor gleich. Destruktoren automatischer Objekte werden aber ohne delete aufgerufen, und delete tut noch mehr als nur den Destruktor aufzurufen.
Deine vorgeschlagene Syntax wäre übrigens identisch mit einem Funktionsaufruf.Es gibt Placement-new, das ist ein new mit zusätzlichen Parametern, z.B. das bekannte
new(nothrow) MeineKlasse();
Als Gegenstück existiert zwar Placement-delete, aber dieser Operator kann nicht von Hand aufgerufen werden, es existiert keine entsprechende Syntax.