c++引用的弊端-引用不如指针
来源:互联网 发布:中国历史上的真相知乎 编辑:程序博客网 时间:2024/06/04 18:44
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中,引用类型是一等公民),而指针天然有值类型的含义,或者从这个角度上,我们可以理解引用不如指针了.
- c++引用的弊端-引用不如指针
- [C++] 引用和指向指针的引用
- [C] 指针参数的引用
- c/c++指针的引用
- c的指针*和引用&
- 【C++】指针&引用的区别
- 【C/C++】引用和指针的区别
- 【C/C++】指针与引用的区别
- 引用、指针的指针、指针的引用
- C |java 指针|引用
- 【c++】指针与引用
- C/C++指针 引用
- 【C++】指针与引用
- C++【引用与指针】
- c++-引用函数指针
- 指针与引用c
- 引用,指针,C++,java
- c++:引用和指针
- 一首歪诗(爆笑)
- Python介绍
- xml格式的string转换为dataset
- 七个走好IT技术之路的诀窍
- Junit的学习笔记一
- c++引用的弊端-引用不如指针
- 堆:欢乐和痛苦(转)
- 掌握ADO.NET的十个热门技巧
- Linux 安装程序中提供的附加引导和内核引导选项
- js 验证
- 正则表达式搜魂者
- gridveiw操作大全
- VS2005中,无法执行添加/移除操作,因为代码元素是只读的
- CNS.SectProperties.v1.0.XScale.WM5