为什么在C++中添加了引用?(从历史的角度来看)

10

我已经阅读了许多有关引用和指针之间的区别以及何时使用它们的讨论。它们似乎都是从对这两者行为的分析中得出结论。

但我仍然想知道语言设计者的想法。这种设计的主要动机是什么?在什么典型情况下它被用来使用?也许答案已经包含在我提到的讨论中,但我想知道哪些是真实可靠的。

附:引用在C++中是否与指针一样悠久的历史?它是从一开始就产生的还是作为某些情况的补丁出现的?非常感谢。

2个回答

22

这里是 Stroustrup 添加指针和引用到语言中的原因。

基本上它们主要是为了支持运算符重载而添加的。


哇,这真是一个直截了当的答案。谢谢。 - phoenie

6

来自FAQ

虽然引用通常使用底层汇编语言中的地址实现,但请不要将引用视为指向对象的有趣指针。引用就是对象。它不是对象的指针,也不是对象的副本。它就是对象。

结合这篇文章,它应该可以回答你的一些问题(很可能除了历史)。您可以随时深入研究标准,但我认为不太可能会有关于引用起源的任何有趣的故事...


1
一个引用就是一个指针。当调试内存问题等等时,理解这一点非常重要。 - Macke
5
引用不是指针,但有时会在幕后使用指针来实现。有时候也不会,这种情况下之前的建议将是一个重大误导。特别地,绑定到引用的临时对象(例如 T const& t = T())不太可能被实现为指针。 - MSalters
引用是指针,编译器保证其不为空。 - Dimitri C.
4
引用不是指针,它是一个别名。把它当作指针来思考会在调试时给你添麻烦。当代码被编译器编译时,如果优化器正在发挥作用,则可能根本没有任何指针存在。请注意:对指针取地址和对引用取地址将得到非常不同的结果。 - Martin York

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接