为什么C ++有一个引用类型“&”?

时间:2013-04-24 13:40:58

标签: c++

C ++已经有了指针类型,它已经非常强大,但它也有引用类型,其大部分工作也可以通过指针完成,那么引用类型的优势是什么?为什么C ++的创建者将这种类型添加到其中?

3 个答案:

答案 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 ++编译的每一件事)