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

5 c++ reference

我已经阅读了许多关于引用和指针之间的区别以及何时使用哪些内容的讨论.他们似乎都从分析两者的行为中得出了他们的结论.

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

PS只要指针在C++中,引用是否有历史记录?它起源于一开始还是作为某些情况的补丁?非常感谢.

Gle*_*len 17

这是Stroustrup将它们添加到语言中原因.

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


Ano*_*ous 6

来自常见问题解答

尽管引用通常是使用底层汇编语言中的地址来实现的,但请不要将引用视为指向对象的滑稽指针。引用就是对象。它不是指向对象的指针,也不是对象的副本。它是物体。

连同本文一起,应该可以回答您的一些问题(很可能除了历史之外)。你总是可以深入研究这个标准,但我发现不太可能有任何关于引用起源的好故事......

  • 引用不是指针,但有时在幕后用指针实现。有时并非如此,在这种情况下,之前的建议将是一个主要的转移注意力的内容。特别是,绑定到引用的临时变量(即“T const& t = T();”)不太可能被实现为指针。 (5认同)
  • 引用不是指针。它是一个别名。将其视为指针会让您在调试时陷入麻烦。当代码被编译时,如果优化器正在执行其工作,则任何地方都可能没有指针。注意:获取指针的地址和获取引用的地址会给你带来非常不同的结果。 (4认同)