Тем не менее, хорошей идеей в C ++ является использование умных объектов (вероятно, о чем вы говорите). Более или менее, класс, который содержит ссылку на объект и который обеспечивает освобождение указанного объекта при ударе деструктора и не добавляет много объектов для одновременного уничтожения в одном объекте (хотя результат один и тот же, он чище .)

то-то на ТАК, я наткнулсяэтот вопрос и один из комментариев к ответу с наибольшим количеством голосов (пятый комментарий к этому ответу с наибольшим количеством голосов) предполагает, чтоdelete p; p = NULL; являетсяантипаттерн, Я должен признаться, что я использую это довольно часто, сравнивая это иногда \ большую часть времени с проверкойif (NULL != p). Тот человек Сам, кажется, предлагает это (см.destroy() пример функции), поэтому я действительно смущен, почему это может быть такая страшная вещь, чтобы считатьсяантипаттерн, Я использую его по следующим причинам:

когда я освобождаю ресурс, я также хочу сделать его недействительным для дальнейшего использования, и NULL - правильный инструмент, чтобы сказать, что указатель недействителенЯ не хочу оставлять висящие указателиЯ хочу избежать двойных \ множественных бесплатных ошибок - удаление NULL-указателя похоже на nop, но удаление висящего указателя похоже на «выстрел в себя»

Обратите внимание, что я не задаю вопрос в контексте"это" указатель и давайте предположим, что мы не живем в идеальном мире C ++, и что унаследованный код существует, и его необходимо поддерживать, поэтому, пожалуйста, не предлагайте какие-либо умные указатели :).