私はC++のFAQ読んでいた - 「8.6 - When should I use references, and when should I use pointers?」と特にこの文:C++に "NULL参照"がないのはなぜですか?
使用参照することができます、とポインタあなたがする必要があります。オブジェクトを参照していない参照 - 関数のパラメータまたは戻り値が「センチネル」の参照を必要とする場所
...
上記の例外があります。これは、通常、ポインタを返す/取ることによって最もよく行われ、NULLポインタにこの特別な意味を与えます(参照は、逆参照されたNULLポインタではなく、オブジェクトのエイリアスでなければなりません)。
私が見たことから、 "センチネル"参照の必要性は、しばしば参照の代わりにポインタを使用する理由です。私が疑問に思っているのは、なぜC++に参照用の特別な "NULL値"がないのですか?それは多くの問題を解決するポインタをほとんど不要にするだろうと思われる。
なぜ、それは言語仕様の一部ではありませんでしたか?
編集:
私は私の質問がクリアされているかわからない - 私はNULL参照についてlitterally求めていませんよね。ほとんどの場合、私はC++で "参照はオブジェクトです"と読みます。そして、ほとんどのOOP言語では、オブジェクトはNULL(パスカル、C#、Java、JavaScript、PHPなど)で、これらのすべてでsomeObject = null
またはsomeObject := nil
を実行できます。実際には、Pascalもポインタをサポートしていますが、オブジェクトはnil
です。だから、C++は何とか特別なもので、NULLオブジェクトを持たないのはなぜですか?見落としや実際の決定だったのでしょうか?
ポインタが必要なことをどのように取り除くのかを教えてください。 –
@nathanwhiteしたがって、参照は構文的に砂糖になります。おそらく、ポインタはいつでも使用できます。 IMOは、参照の利点の一部を完全に削除します。 – hvd
[C++にポインタと参照の両方があるのはなぜですか?](http://www2.research.att.com/~bs/bs_faq2.html#pointers-and-references)と[C++:nullリファレンス](http: /stackoverflow.com/questions/4364536/c-null-reference)。 –