C ++已经有了指针类型,它已经非常强大,但它也有引用类型,其大部分工作也可以通过指针完成,那么引用类型的优势是什么?为什么C ++的创建者将这种类型添加到其中?
答案 0 :(得分:2)
首先,它表明该对象不能为空。
其次,它无法指定指向另一个变量。
答案 1 :(得分:2)
答案是“复制构造函数”。
C ++是一种基于价值的语言。当您说Foo x; Foo y = x;
时,您需要y
的方式与x
具有相同的价值。为此,您需要一个复制构造函数。复制构造函数必须将x
对象作为参数,但它不能对其进行复制,因为这是我们尝试定义的操作。
所以必须通过 reference 来获取参数。
(你可以让复制构造函数奇怪地行为并取一个地址,但这会出乎意料并使语言混乱,特别是考虑到它从C语言的演变。一种新的类型特征是一个更清洁,更强大的解决方案。)
答案 2 :(得分:0)
引用只引用一个对象,它必须有一个引用的对象(不能为null)。
我认为 C ++的创建者只想使用引用(比如C#),但必须允许使用指针有两个原因:C ++中的引用不够强大拥有所有需要的功能,C ++承诺与C语言具有可比性(C编译C ++编译的每一件事)