函数形参中的const引用
来源:互联网 发布:旧版手机淘宝2014安卓 编辑:程序博客网 时间:2024/05/22 07:53
函数形参中的const引用
这里将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对象。给这类函数传递一个字面值、一个表达式、或者一个需要进行类型转换的对象都是不允许的
int fnExample(int &iValue){........}
- 函数形参中的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
- oracle case when的使用方法
- poj 2777 Count Color
- What is the purpose of @SmallTest, @MediumTest, and @LargeTest annotations in Android?
- Java2-J2EE的13种技术
- VS环境下使用makefile文件编译
- 函数形参中的const引用
- IOS学习笔记(6)label textField textview
- OpenSSL常用函数--证书操作
- HNCU1742:算法3-3:迷宫
- Android 仿大众点评团购购买条浮动效果
- Asp.Net生命周期和Http管道技术
- 判断二叉树是否对称
- top5---direct path read,direct path write
- cmd中查看端口连接情况并关关闭相应的端口进程的方法