Verwenden Sie NULL oder 0 (Null) für Zeiger in C ++?

In den frühen Tagen von C ++, als es auf C geschraubt wurde, konnten Sie NULL nicht verwenden, da es als definiert wurde(void*)0. Sie konnten keinem anderen Zeiger als NULL zuweisenvoid*, was es irgendwie nutzlos machte. Damals wurde angenommen, dass Sie verwendet haben0 (Null) für Nullzeiger.

Bis zum heutigen Tag habe ich weiterhin Null als Nullzeiger verwendet, aber die um mich herum bestehen darauf, Null zu verwendenNULL. Ich persönlich sehe keinen Vorteil darin, einen Namen zu nennen (NULL) auf einen vorhandenen Wert - und da ich auch gerne Zeiger als Wahrheitswerte teste:

if (p && !q)
  do_something();

dann ist die Verwendung von Null sinnvoller (als wenn Sie verwendenNULLkönnen Sie nicht logisch verwendenp && !q - Sie müssen explizit mit vergleichenNULL, es sei denn du nimmst anNULL ist Null, in diesem Fall warum verwendenNULL).

Gibt es einen objektiven Grund, NULL vorzuziehen (oder umgekehrt), oder ist alles nur eine persönliche Präferenz?

Bearbeiten: Ich sollte hinzufügen (und wollte ursprünglich sagen), dass ich mit RAII und Ausnahmen selten Null / Null-Zeiger verwende, aber manchmal brauchst du sie immer noch.

Antworten auf die Frage(21)

Ihre Antwort auf die Frage