C の上にボルトで固定された C++ の初期の頃は、NULL は として定義されていたため、使用できませんでした(void*)0。以外のポインタに NULL を割り当てることができなかったためvoid*、役に立たなくなりました。当時は、0null ポインターに (ゼロ) を使用することが認められていました。
私は今までゼロをヌルポインタとして使い続けてきましたが、周りはどうしても を使いたがりますNULL。個人的には、既存の値に名前 ( ) を付けることのメリットはないNULLと思います。また、ポインタを真理値としてテストすることも好きなので:
if (p && !q)
do_something();
次に、ゼロを使用する方が理にかなっています ( を使用する場合と同様に、 をNULL論理的に使用することはできません。がゼロであると仮定しない限り、p && !qを明示的に比較する必要があります。NULLNULLNULL
NULL よりもゼロ (またはその逆) を優先する客観的な理由はありますか、それともすべて個人的な好みですか?
編集: RAII と例外を使用して、ゼロ/NULL ポインターを使用することはめったにありませんが、それでも必要な場合があることを追加する必要があります (本来はそう言うつもりでした)。