「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > null vs. nullptr:なぜC ++ nullポインターが置き換えられたのですか?

null vs. nullptr:なぜC ++ nullポインターが置き換えられたのですか?

2025-02-26に投稿されました
ブラウズ:402

NULL vs. nullptr: Why Was the C   Null Pointer Replaced?

null vs. nullptr:cプログラミングの世界で交換

を明確にすると、cでのnullptrの導入により大きな変化が発生しました。 0x、従来のヌルを交換します。この代替品は好奇心を刺激し、質問を促しました:なぜこの変更が実装されたのですか? Cスタイルの「マクロ」とポインタータイプの合法的な文字通りの価値の両方として。このあいまいさは、特に過負荷の関数呼び出しで混乱につながる可能性があります。次の例を考えてみましょう。

void f(int); void f(foo *); f(null); //あいまいなことに、nullptrの導入により

を呼び出すことができますが、このあいまいさは解決されました。 nullptrは、nullポインターを明示的に示す専用のタイプ(std :: nullptr_t)です。それはあらゆるポインタータイプに暗黙的に変換可能であり、明確な過負荷解像度を保証します。 Nullをnullptrに置き換えると、この問題が排除され、ポインター値と整数がより明確な区別を提供しました。重要な利点:

改善型安全:
void f(int);
void f(foo *);

f(NULL); // Ambiguous, could be either call

Consistent Syntax:

nullptr c標準ライブラリの規則に適合します。「p」は、イテレーターやスマートポインタータイプなど、ポインター関連のタイプと値のサフィックスとして使用します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3