首页 > 编程语言 > 详细

【More Effective C++】Item 1

时间:2014-03-07 13:31:15      阅读:463      评论:0      收藏:0      [点我收藏+]

Item 1:仔细区别pointer和reference

对于很多C++初学者来说,pointer和reference的区别,以及什么情况下该使用reference,什么情况下要使用pointer,都是一个很容易混淆的问题。

对于这个问题,大家只要明白一点,就能很容易把握这个度:没有所谓的Null reference,一个reference必须总代表一个对象。

 

因此,给出以下明确的建议:

  1、当定义的变量需要改变以指向其他对象,或者它可以不指向任何对象时,应该使用pointer;

  2、如果这个变量总要指向一个对象,那么它应该定义为reference;

  3、在某些operator重载中,返回值用pointer无法达到语法需求时,也应该使用reference,如operator[],如果其返回值是pointer,那么当返回值变量作为赋值运算符“=”等的left value时,它会被写成*rvalue[2]=xx;这样看上去好像是指针数组,而实际上它不是。

 

了解到上面的内容之后,我们还应该注意以下几点:

  1、不能定义空指针的引用,即char* p=0;  char& rc=*p;这是一个有害的行为,其结果连编译器都无法预知;

  2、reference的效率比pointer的效率要高一些,因为reference不需要进行有效性检查;

  3、pointer和reference还有另外一个区别:pointer可以被重新赋值,但是reference却总是指向它最开始初始化的那个对象。

【More Effective C++】Item 1,布布扣,bubuko.com

【More Effective C++】Item 1

原文:http://www.cnblogs.com/next-IT-direction/p/3585386.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!