nullptr

nullptr キーワードは、任意の生ポインター型に変換可能な型 std::nullptr_t の null ポインター定数を指定します。 ヘッダーを含めずにキーワード nullptr を使用できますが、コードで型 std::nullptr_t を使用する場合、ヘッダー <cstddef> を含めることにより定義を行う必要があります。

Note

また nullptr キーワードは、マネージド コード アプリケーション用に C++/CLI でも定義されており、ISO 標準の C++ キーワードに対して互換性がありません。 マネージド コードをターゲットとする /clr コンパイラ オプションを使用してコードをコンパイルする可能性がある場合は、コンパイラでネイティブな C++ 解釈を使用することを保証する必要があるすべてのコード行で __nullptr を使用します。 詳細については、「nullptr (C++/CLI と C++/CX)」を参照してください。

解説

null ポインター定数として NULL またはゼロ (0) を使用しないでください。nullptr は悪用に対する脆弱性が少なく、大半の状況でより適切に動作します。 たとえば、func(std::pair<const char *, double>) が指定されている場合に、func(std::make_pair(NULL, 3.14)) を呼び出すとコンパイラ エラーが発生します。 マクロ NULL0 に展開します。したがって、std::make_pair(0, 3.14) の呼び出しでは、funcstd::pair<const char *, double> パラメーター型に変換可能ではない std::pair<int, double> が返されます。 func(std::make_pair(nullptr, 3.14))std::make_pair(nullptr, 3.14) に変換可能な std::pair<std::nullptr_t, double> を返すので、std::pair<const char *, double> の呼び出しは正常にコンパイルされます。

関連項目

キーワード
nullptr (C++/CLI と C++/CX)