您的位置:首页 > 编程语言 > C语言/C++

读书笔记《More Effective C++》条款1:仔细区别pointers和references

2017-03-06 17:36 357 查看
pointers使用“*”和“->”操作符,references则使用“.”

1.没有所谓的null reference。一个reference必须总代表某个对象,pointer可以设置为null。也就是说,如果这个变量总是必须代表一个对象,不允许把这个变量设置为null,那么就要使用reference。

2.由于reference一定得代表某个对象,C++因此要求references必须有初值。但是pointers就没有这样的限制。

3.“没有所谓的null reference”这个事实意味使用references可能会比使用pointers更富效率。这是因为使用reference之前不需要测试其有效性(是否为空指针)。

4.pointers和references之间的另一个重要差异就是,pointers可以被重新赋值,指向另一个对象,reference却总是指向(代表)它最初获得的那个对象。

结论:当你知道你需要指向某个东西,而且绝不会改变指向其他东西,或是当你实现一个操作符而其语法需求无法由pointers达成,你就应该选择references。任何其他时候,请采用pointers。

博文摘要:

从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。
而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。

相同点:
都是地址的概念;指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名。

不同点:
1.指针是一个实体,而引用仅是个别名;
2.引用只能在定义时被初始化一次,之后不可变;指针可变;
3.引用没有const,指针有const,const的指针不可变;
4.引用不能为空,指针可以为空;
5.“sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身的大小;
6.指针和引用的自增(++)运算意义不一样;
7.引用是类型安全的,而指针不是 (引用比指针多了类型检查)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: