函数形参中的const引用
来源:互联网 发布:三七灰土白灰用量算法 编辑:程序博客网 时间:2024/05/01 08:51
这里将C++ Primer中函数形参章节有关const和引用的问题简单小结如下:
一、非const非引用形参
这个是一个平庸的情形。函数参数通过复制对应的实参实现初始化,函数本身对形参的修改不会影响到实参。传递给这类函数的实参可以是一个const型的对象,也可以是非const的对象。
一个需要注意的事情是,有一个较为特殊的例子是指针形参,也就是形参是指针。这类函数的定义形式是:
int fnExample(int *iValue){......}
同一般的非const非引用情形一样,函数不会修改传递给它的实参(指针),但是,对指针的局部修改将会改变指针所指向的值。如果需要保护指针所指向的值,我们必须将形参定义为指向const对象的指针 :
int fnExample(const int *iValue){........}
此时我们仍然可以传递一个int*型实参给函数,而并不一定需要传递const int*型实参。
二、非引用const型形参
int fnExample(const int iValue){.......}
这种情形事实上与刚刚讨论的指向const对象的指针形参是一致的,我们不可以改变实参的局部副本,但我们既可以传递给函数const对象,也可以传递非const对象。
三、复制实参的局限性
以下几种情形不适宜复制形参,此时需要将形参定义为引用或者指针类型:
1.需要修改实参的值
2.复制对象时间或空间代价过大
3.没有办法复制实参
四、const引用形参
前面提到,对于复制类类型或者大型数组,非引用形参效率太低。此时我们需要将形参定义为引用类型,但如果我们仅仅希望避免复制,而不是为了要改变实参,那么我们应该把形参定义为const引用:
int fnExample(const int &iValue){........}
五、非const引用形参
如果函数没必要修改实参,而仅仅是避免复制,则应该使用const引用,非const引用毫无必要地限制了函数的使用。如果函数具有普通的非const引用形参,则必须给函数传递类型完全一致的非const对象。给这类函数传递一个字面值、一个表达式、或者一个需要进行类型转换的对象都是不允许的。
- 函数形参中的const引用
- 函数形参中的const引用
- 函数形参const 引用
- 函数形参为什么要const+引用
- 函数形参为什么使用const引用(常引用)
- 函数形参参数:const对象,const指针 const引用 实例
- const引用形参
- const引用形参
- c++ 函数形参关于const和引用
- C++函数中const引用形参的一点理解
- const 与函数引用
- C++中的const 引用
- 非const 引用形参
- 转换构造函数,类型转换函数,二义性,非const引用形参。
- 函数返回const指针与const引用。
- const 常量 解释 引用 函数
- C++中的引用和const
- C++中的引用与const
- 图像传感器调试经验总结
- 开源批判
- 关于H-JTAG的NANDFLASH烧写方法以及2416初始化脚本的问题
- 很好,开始了
- struts2 类型转换
- 函数形参中的const引用
- 我来了
- 一些Google不到的未知进程(图组)
- [求救] CMD 文本验证 问题
- 幸苦假象
- 设计模式----Strategy(策略)
- dwr开发指南---Converters
- 服务器扫雷中
- 痛