1. ホーム
  2. c++

[解決済み】NULL vs nullptr (なぜ置き換えられたのか?) [重複]

2022-04-04 17:14:29

質問

C++で知っている 0x または NULL に置き換わっていました。 nullptr をポインタベースのアプリケーションで使用することができます。 なぜこのような置き換えが行われたのか、その理由を知りたいのです。

どのようなシナリオで nullptr オーバー NULL ポインターを扱うときに有益なのか?

どのように解決するのですか?

nullptr は、タイプ std::nullptr_t . これは暗黙のうちに任意のポインタ型に変換されます. したがって,これは std::nullptr_t やオーバーロード解決におけるポインタ型は含まれませんが int .

0 (別名、CのNULLをC++に橋渡ししたもの)は、特にオーバーロードされた関数の解決に曖昧さをもたらす可能性があります。

f(int);
f(foo *);

(コメントでご指摘いただいたCalethさんに感謝します)。