0x
C++ では、またはポインターベースのアプリケーションNULL
で が置き換えられたことは知っていますnullptr
。なぜこの置き換えが行われたのか、正確な理由が知りたいです。
ポインターを扱うときにnullptr
over を使用すると有益なシナリオはどれですか?NULL
ベストアンサー1
nullptr
には型がありますstd::nullptr_t
。これは暗黙的に任意のポインタ型に変換可能です。したがって、std::nullptr_t
オーバーロード解決では または ポインタ型と一致しますが、 などの他の型には一致しませんint
。
0
(別名、C の NULL が C++ にブリッジされる) は、オーバーロードされた関数の解決において、次のようなあいまいさを引き起こす可能性があります。
f(int);
f(foo *);
(コメントでこの点を指摘してくれたCalethに感謝します。)