当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

c++引用的弊端-引用不如指针

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