ヌルポインタ
C++では、C言語よりも型チェックが厳密になり、汎用ポインタvoid *をあらゆるポインタ型に暗黙的変換することが不可能になった。代わりに、整数リテラル 0 がヌルポインタ定数を意味するという仕様になった。C言語からの移植を容易にするためなどの目的で、NULL マクロ自体は依然として標準ヘッダーで定義されるが、C言語とは異なり整数リテラル 0 で実装されている。
ただし、整数リテラル 0 をヌルポインタとみなすという仕様は、関数オーバーロードやテンプレート関連でしばしば問題を引き起こす結果となった。C++11では代替として、std::nullptr_tという型を持ち、明確にヌルポインタであることを表すnullptrリテラルが導入された。C++11以降でもNULLは引き続き利用可能だが、整数定数のゼロに等しいとは限らず、実装は処理系依存となる。