【发布时间】:2012-07-09 15:56:55
【问题描述】:
我正在阅读 C++ 常见问题解答 -“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、PHP 等。在所有这些中,您可以使用 someObject = null 或 someObject := nil。事实上,Pascal 也支持指针,但仍然允许对象为nil,因为它有它的用途。那么为什么 C++ 有某种特殊性并且没有 NULL 对象呢?这只是一个疏忽还是一个实际的决定?
【问题讨论】:
-
请告诉我这将如何消除对指针的需求?
-
@nathanwhite 因为那时引用将成为指针的语法糖,大概只要有指针就可以使用它。哪个,IMO,将完全消除引用的一些好处。
标签: c++ pointers reference null specifications