Возможный дубликат:
Безопасно лиdelete this
?
Я делал небольшую работу над классом, который предназначен для работы в качестве node в связанном списке, и я решил, что предоставил классу его собственную функцию удаления, а не класс управления, выполняющий его. Поэтому в основном это происходит следующим образом:
void Class::Delete() {
//Some cleanup code before deleting the object
delete this;
}
Теперь я протестировал это и, похоже, работает нормально, но у меня была проблема в прошлом, когда объекты были в середине запущенного кода, были удалены, а затем, очевидно, разбилась программа, пытаясь использовать no-long-existing object.
Поскольку "удалить это" находится справа в конце функции, он, очевидно, выходит из функции и отлично работает, но разве такая практика плохая? Может ли это когда-нибудь взорваться на моем лице, если я не буду осторожен?