Страницы

Поиск по вопросам

четверг, 5 декабря 2019 г.

Можно ли в C++ сделать так: “delete this”?

#cpp


Можно ли в C++ сделать так: delete this ?
    


Ответы

Ответ 1



Можно, при соблюдении ряда условий. Именно - деструктор вы сделаете private. Объясню. Объект, который может самоуничтожиться, нежелательно создавать на стеке, в таком случае, деструктор может быть вызван дважды, что приведет к UB. @Harry верно заметил, что использовать умный указатель также нежелательно. Либо, при самоуничтожении надо как-то ставить его (этот указатель) в известность о своем уходе. @Abyx внес верное замечание о том, что скрывать надо деструктор, а не конструктор.

Ответ 2



Да, можно. Но после delete this, this использовать уже нельзя.

Комментариев нет:

Отправить комментарий