У добре структурованій програмі з відповідною перевіркою помилок немає причин не призначати її недійсною. 0
окремо стоїть як загальновизнане недійсне значення в цьому контексті. Невдача і невдача.
Багато аргументів проти призначення 0
припускають, що це може приховати помилку або ускладнити контрольний потік. По суті, це або помилка вгорі (не з вашої вини (вибачте за поганий каламбур)), або інша помилка від імені програміста - можливо, навіть ознака того, що потік програми став занадто складним.
Якщо програміст хоче ввести використання покажчика, який може бути нульовим як спеціальне значення, і записати всі необхідні ухилення навколо цього, це складне завдання, яке вони навмисно ввели. Чим кращий карантин, тим швидше ви виявите випадки нецільового використання, і тим менше вони зможуть поширюватися на інші програми.
Добре структуровані програми можуть бути розроблені за допомогою функцій C ++, щоб уникнути цих випадків. Ви можете використовувати посилання, або ви можете просто сказати "передача / використання нульових або недійсних аргументів - це помилка" - підхід, який однаково застосовний до контейнерів, таких як розумні покажчики. Посилення послідовної та правильної поведінки забороняє цим клопам добиратися далеко.
Звідси ви маєте лише обмежену область застосування та контекст, де може існувати (або дозволено) нульовий покажчик.
Те ж саме може бути застосовано до покажчиків, яких немає const
. Наступне значення вказівника є тривіальним, оскільки його обсяг настільки малий, а неправильне використання перевірено та чітко визначено. Якщо ваш інструментарій та інженери не можуть слідувати за програмою після швидкого читання або є невідповідна перевірка помилок або непослідовний / поблажливий потік програми, у вас є інші, більші проблеми.
Нарешті, у вашому компіляторі та середовищі, ймовірно, є якісь запобіжники для тих часів, коли ви хочете ввести помилки (прошивання), виявити доступ до звільненої пам’яті та зловити інші пов'язані UB. Ви також можете вводити подібну діагностику у свої програми, часто не впливаючи на існуючі програми.
delete
нульового вказівника, хоча це одна з причин, що нульовий покажчик може бути хорошим.