【发布时间】:2013-04-24 13:40:58
【问题描述】:
C++已经有了指针类型,而且已经很强大了,但是它也有引用类型,它的大部分工作也可以通过指针来完成,那么引用类型有什么好处呢?为什么 C++ 的创造者在里面加了这个类型?
【问题讨论】:
-
通过指针使用算术运算符怎么样?
*a = *c + *d * *c
标签: c++
C++已经有了指针类型,而且已经很强大了,但是它也有引用类型,它的大部分工作也可以通过指针来完成,那么引用类型有什么好处呢?为什么 C++ 的创造者在里面加了这个类型?
【问题讨论】:
*a = *c + *d * *c
标签: c++
答案是“复制构造函数”。
C++ 是一种基于值的语言。当您说Foo x; Foo y = x; 时,您需要一种方法使y 具有与x 相同的值。为此,您需要一个复制构造函数。复制构造函数必须将 x 对象作为参数,但它不能对其进行复制,因为这正是我们试图定义的操作。
所以它必须通过reference来获取参数。
(您可以使复制构造函数行为怪异并获取地址,但这会出乎意料并且会使语言变得一团糟,尤其是考虑到它是从 C 语言演变而来的。一种新的类型特性是一种更清洁、更强大的解决方案。)
【讨论】:
Foo y = &x; 或必须进行隐式转换。
C 关于指针的规范。这也是C++ 的目标。
首先表示对象不能为空。
第二,不能赋值为指向另一个变量。
【讨论】:
reference 在他的生命中只引用一个对象,它必须有一个对象可以引用(不能为空)。
我相信 C++ 的创建者的目标是仅使用引用(如 C#),但必须允许使用指针,原因有两个:具有所有需要的功能,并且 C++ 被承诺与 C 具有可比性(C 编译 C++ 编译的所有东西)
【讨论】: