Dans les premiers jours de C++ quand il a été vissé sur le dessus de C, vous ne pourriez pas utiliser la valeur NULL comme il a été défini comme (void*)0
. Vous ne pourriez pas affecter la valeur NULL à un pointeur autre que void*
, ce qui fait inutile. Retour en ces jours, il a été accepté que vous avez utilisé 0
(zéro) pour les pointeurs null.
À ce jour, j'ai continué à utiliser le zéro comme un pointeur null mais ceux autour de moi d'insister sur l'utilisation de l' NULL
. Personnellement, je ne vois aucun avantage à donner un nom (NULL
) à une valeur existante - et depuis j'ai aussi envie de tester les pointeurs en tant que valeurs de vérité:
if (p && !q)
do_something();
ensuite, à l'aide de zero a plus de sens (comme si vous utilisez NULL
, vous ne pouvez pas logiquement utiliser p && !q
- , vous devez explicitement comparer NULL
, à moins que vous assumez NULL
est égal à zéro, dans ce cas pourquoi utiliser NULL
).
Est-il une raison objective à préférer zéro sur NULL (ou vice versa), ou est tout simplement de préférence personnelle?
Edit: je devrais ajouter (et signifiait à l'origine de dire) qu'avec RAII et des exceptions, j'utilise rarement zéro/pointeurs NULL, mais parfois vous avez besoin d'eux encore.