Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19279996
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: C/C++

2008-05-30 18:27:34

 c++中引入引用的概念是为了操作符重载(见c++的设计与演化),scott meyers在其相关的Effective c++中也对引用和指针有过论述.
    在我刚刚接触引用的概念以后,我认为这是一个极好的东西,在函数参数和成员变量中大量的使用他,但是很快我就发现引用不如指针了.
    除了操作符重载引用是必须的以外,引用的一个其他的好处是对于函数参数传递来说,一般不用检查引用是否是空(确实能够把引用指向一个空对象,但是这是病态的做法),而对于指针一般至少也要assert一下.
    不要小看这个是否为空的检查,可以省去不少的typing.
    但是引用有一个固有的弊端,引用不能赋值,含有引用的类对象,不能生成默认的默认,copy构造和赋值函数(你必须给引用进行初始化的赋值,引用没有默认值).
    如果说上面的你还可以容忍,那么在boost::bind中,对于引用的函数参数,你必须使用boost_ref或者boost_cref的wrapper class;而对指针则没有这个限制.
     我个人非常喜欢boost::bind(有了他,你不必再使用烦人的mem_fun之类的了),引用的函数参数给我带来了很多的不便.
在C/C++中,值类型是一等公民(在/中,引用类型是一等公民),而指针天然有值类型的含义,或者从这个角度上,我们可以理解引用不如指针了. 
阅读(318) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~