NULL と nullptr: 置換の理由
C での NULL の nullptr への置換は、次のようないくつかの理由によって動機付けられました。
1.型安全性:
nullptr は std::nullptr_t 型の厳密に型指定された定数ですが、NULL は任意のポインター型に変換できる整数定数です。この違いにより、型の安全性が確保され、NULL から別のポインター型への誤った変換が防止されます。
2.オーバーロード解決のあいまいさ:
NULL は、関数のオーバーロード解決においてあいまいさを引き起こす可能性があります。たとえば、次の 2 つの関数について考えてみましょう。
void f(int); void f(foo*);
NULL を使用すると、NULL を引数として渡すときにどの関数を呼び出すかが不明確になります。一方、nullptr は、任意のポインター型に暗黙的に変換できるため、2 番目の関数にのみ一致します。
3.移植性:
NULL は C で定義されたマクロですが、nullptr は C 標準ライブラリの一部です。この違いにより、nullptr の移植性が高まり、さまざまなコンパイラ間で一貫した動作が保証されます。
nullptr を使用する利点:
以上がNULL と nullptr: C が変更されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。