NULL と nullptr: Null ポインター表現の進化
C 0x では、従来の NULL マクロは nullptr に置き換えられました。この変更は単なる表面的なものではありませんでした。
置換の理由
NULL は 0 として定義されており、オーバーロードされた関数の解決に潜在的なあいまいさが生じました。次のコードを考えてみましょう。
void f(int); void f(foo *);
f(NULL) への呼び出しが行われた場合、コンパイラーは f(int) と f(void *) のどちらを呼び出すか判断できません。このあいまいさは、std::nullptr_t 型を持ち、任意のポインタ型に暗黙的に変換できる nullptr を使用することで解決されます。
nullptr の利点
NULL と比較すると、nullptrを使用する場合、いくつかの利点がありますポインタ:
以上がNULL と nullptr: C の Null ポインター表現が変更されたのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。