任意の生ポインター型に変換可能な std::nullptr_t 型の null ポインター定数を指定します。Designates a null pointer constant of type std::nullptr_t, which is convertible to any raw pointer type. キーワードを使用できますが、 nullptrコードは、型を使用する場合、ヘッダーを含めずstd::nullptr_t、ヘッダーを含めることで定義する必要がありますし、<cstddef>します。Although you can use the keyword nullptr without including any headers, if your code uses the type std::nullptr_t, then you must define it by including the header <cstddef>.


Nullptrキーワードが c++ も定義されている/cli 用の CLI は、マネージ コード アプリケーションと、ISO 標準の C++ キーワードと互換性がありません。The nullptr keyword is also defined in C++/CLI for managed code applications and is not interchangeable with the ISO Standard C++ keyword. 場合を使用して、コードをコンパイルする場合があります、 /clrマネージ コードを対象とするコンパイラ オプションを使用し、__nullptrで任意の行のコードは、コンパイラはネイティブな C++ 解釈を使用することを保証する必要があります。If your code might be compiled by using the /clr compiler option, which targets managed code, then use __nullptr in any line of code where you must guarantee that the compiler uses the native C++ interpretation. 詳細については、次を参照してください。 nullptrします。For more information, see nullptr.


NULL または 0 を使用しないでください (0) として null ポインター定数です。nullptr悪用に対する脆弱性が減少し、ほとんどの状況でパフォーマンスが優れています。Avoid using NULL or zero (0) as a null pointer constant; nullptr is less vulnerable to misuse and works better in most situations. たとえば、func(std::pair<const char *, double>) が指定されている場合に、func(std::make_pair(NULL, 3.14)) を呼び出すとコンパイラ エラーが発生します。For example, given func(std::pair<const char *, double>), then calling func(std::make_pair(NULL, 3.14)) causes a compiler error. NULL マクロは 0 に展開します。したがって、std::make_pair(0, 3.14) の呼び出しでは、func() の std::pair<int, double> パラメーター型に変換可能ではない std::pair<const char *, double> が返されます。The macro NULL expands to 0, so that the call std::make_pair(0, 3.14) returns std::pair<int, double>, which is not convertible to func()'s std::pair<const char *, double> parameter type. func(std::make_pair(nullptr, 3.14))std::make_pair(nullptr, 3.14) に変換可能な std::pair<std::nullptr_t, double> を返すので、std::pair<const char *, double> の呼び出しは正常にコンパイルされます。Calling func(std::make_pair(nullptr, 3.14)) successfully compiles because std::make_pair(nullptr, 3.14) returns std::pair<std::nullptr_t, double>, which is convertible to std::pair<const char *, double>.

関連項目See also

nullptr(C +/cli CLI)nullptr(C++/CLI)