读书笔记《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.引用是类型安全的,而指针不是 (引用比指针多了类型检查)
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.引用是类型安全的,而指针不是 (引用比指针多了类型检查)
相关文章推荐
- More Effective C++ 条款1 仔细区别pointers和references
- 条款1:仔细区别Pointers和References
- 条款1:仔细区别pointers和references
- 读书笔记: More Effective ++ 操作符 条款6,区别increment/decrement操作符的前置(prefix)和后置(postfix)的形式
- More Effective C++ 条款28 Smart Pointers(智能指针)
- More Effective C++ 条款6 区别 increment/decrement 操作符的前置(prefix)和后置(postfix)形式
- More Effective C++ 读书笔记 之 区别pointer和reference
- c/C++编译的程序占用的内存以及More Effective C++ 条款1:指针与引用的区别
- 读书笔记: More Effective C++ 基础议题,条款1到条款4
- [More Effective C++]条款一:指针与引用的区别
- More Effective C++ 条款16
- More Effective C++ 条款11
- More effective c++ 条款10(上)
- More Effective C++ 条款21
- More Effective C++ 条款26(上)
- More Effective C++ 条款9
- More Effective C++ 条款22
- More effective C++ 条款14
- More Effective C++ 条款19
- More Effective C++ 条款20