私は C++ FAQ を読んでいました - 「8.6 - When should I use references, and when should I use pointers?」 特にこのステートメント:
可能な場合は参照を使用し、必要な場合はポインターを使用します。
...
上記の例外は、関数のパラメーターまたは戻り値が「センチネル」参照 (オブジェクトを参照しない参照) を必要とする場合です。これは通常、ポインターを返す/取得し、NULL ポインターにこの特別な意味を与えることによって行うのが最善です (参照は、逆参照された NULL ポインターではなく、常にオブジェクトをエイリアスする必要があります)。
私が見てきたことから、「センチネル」参照の必要性は、参照の代わりにポインターを使用する理由であることがよくあります。私が疑問に思っているのは、なぜC++には参照用の特別な「NULL値」がないのですか? ポインターがほとんど不要になり、多くの問題が解決されるようです。
では、なぜそれが言語仕様の一部ではなかったのでしょうか?
編集:
私の質問が明確かどうかはわかりません.NULL参照について文字通り質問しているのではありません。ほとんどの場合、C++ では「参照はオブジェクトです」と読みます。また、ほとんどの OOP 言語では、オブジェクトを NULL にすることができます - Pascal、C#、Java、JavaScript、PHPsomeObject = null
などsomeObject := nil
。実際、Pascal はポインターもサポートしていますがnil
、使用法があるため、オブジェクトを にすることもできます。では、なぜ C++ はどこか特殊で、NULL オブジェクトを持たないのでしょうか? それは単なる見落としでしたか、それとも実際の決定でしたか?