Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > "delete this" в функции класса |
Автор: gepard 30.5.2005, 03:50 |
Будет ли это правильно? Может ли класс нормалдьно удалить сам себе из своей же функции. |
Автор: Domestic Cat 30.5.2005, 03:57 |
Может, только это сработает если объект былл создан через new, т.е. на хипе. Если он был создан на стеке, то поведение в током случае не определено (афаик). |
Автор: chipset 30.5.2005, 04:09 | ||
Честно говоря я не думаю так. Я на практике не проверял - но теоретически предполагаю что будет access violation при выходе из блока функции, ибо класс то удалили а функции надо возвращать что-то, а если ещё и какие-то операции с классом будут то... :\ Сейчас проверю на практике. ЗЫ. В любом случае - так делать нельзя ибо это жутко нехороший тон. |
Автор: Domestic Cat 30.5.2005, 04:11 | ||
![]() |
Автор: chipset 30.5.2005, 04:14 | ||||||
Обьект ![]() Добавлено @ 04:20 Можно ![]()
- скомпилировалось и запустилось и созданное на стёке и в куче. Только вот результат был:
Т.е. обьект уничтожился. В любом случае - я так крайне не рекомендую делать ![]() |
Автор: gepard 30.5.2005, 04:24 |
chipset Мерси ![]() |
Автор: Domestic Cat 30.5.2005, 04:25 | ||
http://www.cuj.com/documents/s=8188/cuj0407j/ |
Автор: gepard 30.5.2005, 06:21 |
Прикольно пишут... |
Автор: Fantasist 1.6.2005, 06:06 | ||
Ну привет. А как же самоудаление с подсчетом ссылок? COM на этом базируется. Опять же бывают случаи, когда удобнее определить метод у класса, который удаляет себя, нежели делать это в коде явно (например, для абстрагирования от способа удаления). Это вполне нормально, надо просто понимать, что происходит. |