У перші дні C ++, коли він був закріплений поверх C, ви не можете використовувати NULL, як це було визначено як (void*)0
. Ви не можете призначити NULL жодному вказівнику, окрім цього void*
, який зробив його марним. Ще в ті часи було прийнято, що ти користувався0
(нуль) для нульових покажчиків.
До сьогодні я продовжую використовувати нуль як нульовий покажчик, але ті, хто навколо мене, наполягають на використанні NULL
. Я особисто не бачу ніякої користі від того, щоб надати ім'я ( NULL
) існуючому значенню - і оскільки я також люблю перевіряти покажчики на значення правди:
if (p && !q)
do_something();
тоді використання нуля має більше сенсу (як якщо ви використовуєте NULL
, ви не можете логічно використовувати p && !q
- вам потрібно явно порівнювати NULL
, якщо ви не вважаєте, що NULL
це нуль, і в цьому випадку, чому використовуватиNULL
).
Чи є якась об’єктивна причина віддати перевагу нулю над NULL (або навпаки), або все це лише особисті переваги?
Редагувати: Я повинен додати (і мався на увазі спочатку), що за допомогою RAII та винятків я рідко використовую нульові / NULL покажчики, але іноді вони все ще потрібні.