我正在阅读 C++ 常见问题解答 - “ 8.6 - 何时应使用引用,何时应使用指针? ”,尤其是以下语句:
尽可能使用引用,必要时使用指针。
...
上述情况的例外是函数的参数或返回值需要一个“哨兵”引用——一个不引用对象的引用。这通常最好通过返回/获取一个指针,并赋予 NULL 指针特殊的意义(引用必须始终为对象别名,而不是取消引用的 NULL 指针)。
从我所见,对“哨兵”引用的需求确实经常是使用指针而不是引用的原因。我想知道的是:为什么 C++ 没有一个特殊的“NULL 值”用于引用?似乎它几乎不需要指针,这将解决许多问题。
那么为什么它不是语言规范的一部分呢?
编辑:
我不确定我的问题是否清楚——我想我并没有乱七八糟地询问 NULL 引用。大多数情况下,我在 C++ 中读到“引用就是对象”。而且,在大多数 OOP 语言中,对象可以是 NULL - Pascal、C#、Java、JavaScript、PHP 等,您可以在所有这些中执行someObject = null
或someObject := nil
. 事实上,Pascal 也支持指针,但仍然允许对象是nil
,因为它有它的用途。那么为什么 C++ 有某种特殊性并且没有 NULL 对象呢?这只是一个疏忽还是一个实际的决定?