NULL と nullptr (なぜ置き換えられたのか?) [重複] 質問する

NULL と nullptr (なぜ置き換えられたのか?) [重複] 質問する

0xC++ では、またはポインターベースのアプリケーションNULLで が置き換えられたことは知っていますnullptr。なぜこの置き換えが行われたのか、正確な理由が知りたいです。

ポインターを扱うときにnullptrover を使用すると有益なシナリオはどれですか?NULL

ベストアンサー1

nullptrには型がありますstd::nullptr_t。これは暗黙的に任意のポインタ型に変換可能です。したがって、std::nullptr_tオーバーロード解決では または ポインタ型と一致しますが、 などの他の型には一致しませんint

0(別名、C の NULL が C++ にブリッジされる) は、オーバーロードされた関数の解決において、次のようなあいまいさを引き起こす可能性があります。

f(int);
f(foo *);

(コメントでこの点を指摘してくれたCalethに感謝します。)

おすすめ記事