Dans les premiers jours du C ++, quand il était boulonné sur C, vous ne pouviez pas utiliser NULL tel qu'il était défini comme (void*)0
. Vous ne pouviez pas affecter NULL à un pointeur autre que void*
, ce qui le rendait inutile. À l'époque, il était admis que vous utilisiez 0
(zéro) pour les pointeurs nuls.
À ce jour, j'ai continué à utiliser zéro comme pointeur nul, mais ceux qui m'entourent insistent pour l'utiliser NULL
. Personnellement, je ne vois aucun avantage à donner un nom ( NULL
) à une valeur existante - et puisque j'aime aussi tester les pointeurs en tant que valeurs de vérité:
if (p && !q)
do_something();
alors utiliser zéro a plus de sens (comme si vous utilisez NULL
, vous ne pouvez pas logiquement utiliser p && !q
- vous devez comparer explicitement NULL
, sauf si vous supposez qu'il NULL
est zéro, auquel cas pourquoi utiliser NULL
).
Y a-t-il une raison objective de préférer zéro à NULL (ou vice versa), ou est-ce simplement une préférence personnelle?
Edit: Je devrais ajouter (et je voulais dire à l'origine) qu'avec RAII et les exceptions, j'utilise rarement des pointeurs zéro / NULL, mais parfois vous en avez encore besoin.