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