Mögliches Duplikat:
Ist es sicher, dassdelete this
?
Ich habe ein wenig an einer Klasse gearbeitet, die als Knoten in einer verknüpften Liste fungieren soll, und ich dachte mir, ich gebe der Klasse ihre eigene Löschfunktion, anstatt dass die Verwaltungsklasse das tut. Also im Grunde geht es wie folgt:
void Class::Delete() {
//Some cleanup code before deleting the object
delete this;
}
Ich habe dies nun getestet und es scheint gut zu funktionieren, aber ich hatte in der Vergangenheit ein Problem, bei dem Objekte mitten im laufenden Code waren, gelöscht wurden und dann offensichtlich das Programm abstürzte, weil es versuchte, ein nicht mehr vorhandenes Objekt zu verwenden.
Da "delete this" ganz am Ende der Funktion steht, wird die Funktion natürlich beendet und funktioniert einwandfrei, aber ist diese Art von Praxis überhaupt eine schlechte Idee? Könnte mir das jemals zum Verhängnis werden, wenn ich nicht vorsichtig bin?