nullptr と NULL: 置換の理由
C では、ポインターベースのアプリケーションの NULL は nullptr キーワードに置き換えられました。どちらのオプションも null ポインターを示しますが、nullptr には、これを推奨する利点があるため、推奨されます。
NULL ではなく nullptr を使用する理由
NULL を nullptr に置き換える主な理由タイプセーフティです。 NULL は (void )0 として定義されたマクロで、(void ) の型を持ちます。この広範な型互換性により、特にオーバーロードされた関数が関係するシナリオでは、意図しない動作が発生する可能性があります。
たとえば、次の関数宣言を考えてみましょう。
void f(int); void f(foo *);
NULL ポインタを使用して f を呼び出すと、コンパイラは、どの関数オーバーロードを実行するかを決定できない可能性があります。これは、NULL を暗黙的にポインター型に変換して、2 番目のオーバーロードと一致させることができるためです。
nullptr の利点
nullptr には、 std::nullptr_t の異なるタイプ。オーバーロードの解決で使用される場合、std::nullptr_t またはポインター型のインスタンスのみと一致します。これにより、NULL の広範な型互換性によって生じる曖昧さが解消されます。
さらに、nullptr により、NULL ポインターを使用する意図がコード内で明確に表現されます。
したがって、NULL ではなく nullptr を使用します。型の安全性が向上し、オーバーロードされた関数呼び出しでの意図しない動作が防止され、コードの明瞭さが向上します。
以上がnullptr vs. null:Cが安全性をタイプにシフトするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。