码迷,mamicode.com
首页 > 其他好文 > 详细

条款1:指针与引用

时间:2015-09-19 16:34:39      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

引用区别于指针的一个首要特点就是不存在null reference,一个引用必然代表一个对象。

char *pc=0;

char& rc=*pc;

上面这种形式在C++中属于未定义行为。

引用初始化后将一直代表初始化时的对象,无法更改。而指针可以在使用中更改指向的对象,也可以指向null。因而在使用中无需检验引用的有效性,而需要对指针进行检测是否为null后才能解指针。

string s1("Nancy");

string s2("Clancy");

string &rs=s1;     //rs代表s1

string *ps=&s1;   //ps指向s1

rs=s2;                //rs依旧代表s1,但s1的值变为s2的值

ps=&s2;              //ps指向s2

基于上面的差异,当代表的对象不会更改时(不是指对象的值),应该选用引用;而当希望指向不同对象甚至null时,应该使用指针。

还有一种常见的情况需要使用引用:operator[]。这个操作符需要返回能被赋值的对象,也就是左值变量,一般返回引用。

 

结论:

当你知道你需要指向某个对象,而且绝不会改变指向其他对象,或是当实现一个操作符而语法需求无法由指针实现,就选用引用。其他情况采用指针。

条款1:指针与引用

标签:

原文地址:http://www.cnblogs.com/haoliuhust/p/4821550.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!