Проверка NULL перед удалением объекта с перегруженным удалением - PullRequest
26 голосов
/ 29 сентября 2010

Это прозвучало как один из комментариев к коду.

Хорошая ли идея проверить NULL перед вызовом delete для какого-либо объекта?

Я понимаю, что внутренние операторы удаления для NULL проверяются и являются избыточными, но выдвинутый аргумент был удален, так как оператор может быть перегружен, и если перегруженная версия не проверяет NULL, она может вылететь. Так безопасно ли и разумно ли предполагать, что если и когда удаление будет перегружено, оно проверит NULL или нет? В моем понимании разумно предположить, что первый случай, в котором перегруженное удаление, позаботится о проверке NULL, и точка обзора не будет в порядке. Что ты думаешь?

Ответы [ 11 ]

0 голосов
/ 29 сентября 2010

Немного педантизма C ++: NULL не является встроенной концепцией.Да, мы все знаем, что это значит, но в C ++ до C ++ 0X концепцией нулевого указателя является просто значение 0. Обычно NULL - это макрос для конкретной платформы, который расширяется до 0.

В C ++ 0X мыВы получаете nullptr, который яснее простого нуля и не может быть преобразован ни в один целочисленный тип, кроме bool, и является лучшей концепцией, чем NULL (или, возможно, лучшей реализацией концепции NULL).

...