Konstruktor-Frage
-
Hi, ich behande im Moment das Thema Klassen (Destruktoren).
Meine Frage wäre: Wann muss man zwangsweise einen Destruktoren selber programmieren? Der standart-Destruktor zerstört doch fleißig alle Objekte oder?//EDIT, ich meinte Destruktoren ** sry
-
Zenter schrieb:
Wann muss man zwangsweise einen Destruktoren selber programmieren?
Naja, müssen tut man nie etwas. Manchmal sollte man etwas tun, manchmal nicht. Da gibt es eine Regel names
rule of three.Zenter schrieb:
Der stan****-Destruktor zerstört doch fleißig alle Objekte oder?
Richtig. Diesbezüglich solltest du dir auch
RAIIanschauen.
-
Ich gehe mal davon aus, dass du den Destruktor meinst. Der Konstruktor zerstört eigentlich keine Objekte.
class ok{ int x; public: ok() {x=5;} //Konstruktor ~ok(){} //Destruktor }; class evil { int *x; public: evil(){x=new int(5);} ~evil(){delete x;} //ohne delete Speicherleck };(Normalerweise sollte man aber immer Initialisierungslisten verwenden.)
In diesem wunderbarem Beispiel siehst du, dass der Destruktor einmal selbst implementiert werden muss und einmal nicht. (Allerdings: Benutze NIE(fast) new und delete, RAII)In C++11 kannst du auch das schreiben:
class aut { aut()=default; ~aut()=default; };Dann erzeugt der Compiler sie explizit selber.
-
Danke euch für die Erklärung und für die Tipps die ihr gegeben habt
