1

C++ has already have pointer type, and it is already very powerful, but it also have reference type, whose most work can also be done by pointer, so what's the advantage of reference type? why C++'s creator added this type into it?

4

3 回答 3

2

首先,它表明对象不能为空。

其次,它不能被赋值为指向另一个变量。

于 2013-04-24T13:41:50.557 回答
2

答案是“复制构造函数”。

C++ 是一种基于值的语言。当你说的时候Foo x; Foo y = x;,你需要一种方法y来获得与x. 为此,您需要一个复制构造函数。复制构造函数必须将对象作为参数x,但它不能复制它,因为这正是我们试图定义的操作。

所以它必须通过引用来获取参数。

(你本可以让复制构造函数行为怪异并获取地址,但这会出乎意料并且会使语言变得一团糟,尤其是考虑到它是从 C 语言演变而来的。新的类型特性是一种更清洁、更强大的解决方案。)

于 2013-04-24T13:42:52.133 回答
0

reference 仅在他的生命中引用一个对象,并且它必须有一个要引用的对象(不能为 null)。

我相信C++ 的创建者的目标是只使用引用(如 C#),但必须允许使用指针有两个原因: C++ 中的引用不够强大,无法拥有所有需要的功能,而 C++ 承诺与 C 具有反向可比性(C 编译 C++ 编译的所有内容)

于 2013-04-24T13:42:58.873 回答