C++中const用法(3)——引用形参问题
2015-01-29 15:15
141 查看
c++函数的引用参数用法大概是这样的:
一个简单的交换两个int型数的函数,当调用该函数时,比如
则得到的结果是i=4,j=3.因为引用参数实际上是实参的别名,对引用参数操作也就是对实参进行操作,就像传递指针一样。而如果用普通的int型参数则得不到这样的效果。
如果用const修饰形参,比如const int &a,表示该形参是不能更改的,但是有个问题需要特别注意。
前面我已经介绍过,const变量是无法赋值给const变量的,因此const型的v2无法传递给非const形参。
而非const引用形参只能与完全同类型的非const对象关联,因此short型v1无法传递给int形参。所以应该将不修改相应实参的形参定义为const引用。如果将这样的形参定义为非const引用,则限制了该函数的使用。
void swap(int &a,int &b) { int temp = a; a = b; b = temp; }
一个简单的交换两个int型数的函数,当调用该函数时,比如
int i = 3; int j = 4; swap(i,j);
则得到的结果是i=4,j=3.因为引用参数实际上是实参的别名,对引用参数操作也就是对实参进行操作,就像传递指针一样。而如果用普通的int型参数则得不到这样的效果。
如果用const修饰形参,比如const int &a,表示该形参是不能更改的,但是有个问题需要特别注意。
int incr(int &val) { return ++val; } int main() { short v1 = 0; const int v2 = 42; int v3 = incr(v1); //v1是short型,而形参是int型 v3 = incr(v2); //v2是const,而形参是非const return 0; }
前面我已经介绍过,const变量是无法赋值给const变量的,因此const型的v2无法传递给非const形参。
而非const引用形参只能与完全同类型的非const对象关联,因此short型v1无法传递给int形参。所以应该将不修改相应实参的形参定义为const引用。如果将这样的形参定义为非const引用,则限制了该函数的使用。
相关文章推荐
- C++ 引用类型const形参的用法
- 何时应将引用形参定义为 const 对象?如果在需要 const 引用时,将形参定 义为普通引用,则会出现什么问题?
- 在c++中const引用引发的几个小问题
- c++引用和const 用法 数组 指针
- c++-成员初始化问题(static, const, 引用)
- 函数返回const引用形参的指针问题
- C++中引用&、const的用法
- C++重载函数 const形参 引用指针 const_cast
- C++关于参数为const引用类型的函数调用参数成员函数的一个问题
- 【C++】const 常引用的用法
- c++ 函数形参关于const和引用
- 【C++数据类型】const 引用的几点用法
- c++ 之 引用类型 const 用法
- c++关于引用和const的一些问题
- C++系列——const,引用,指针用法小结
- C++——复制构造函数的形参为什么要是const引用
- C++中形参与const形参的函数重载问题。
- c++中引用(reference)用法剪辑
- C++引用与const引用
- C++ const用法总结