C++ 使用const 引用传递参数
2016-01-22 15:18
204 查看
类似const & int 的形式是C++的常量引用,在函数参数参数列表中常使用const的引用。
引用的作用是防止值传递,这样可以提高代码效率,这种设计策略还能使函数运行的更快,而const是防止误修改函数参数的值。对于一个函数来讲,我们以前都知道函数传递时值传递,也就是说,我们在函数调用时,会为形参重新分配内存,并将实参的值拷贝进去,例如:
以前我们知道在
所以,使用const 引用可以在保证参数不被修改的前提下,防止数据的值传递拷贝。
最近,在看函数模板时
其给出的解释就很清楚了:
通过将函数参数设定为const的引用,我们保证了函数可以用于不能拷贝的类型。当然大多数类型都是允许拷贝的,但是不允许拷贝的类类型也是存在的。
引用的作用是防止值传递,这样可以提高代码效率,这种设计策略还能使函数运行的更快,而const是防止误修改函数参数的值。对于一个函数来讲,我们以前都知道函数传递时值传递,也就是说,我们在函数调用时,会为形参重新分配内存,并将实参的值拷贝进去,例如:
[code]void func(int a,int b) { //... } int main() { int aa=3; int bb=4; func(aa,bb); return 0; }
以前我们知道在
func()函数中,会重新分配内存并将实参
aa和bb的值分别放进去,这种值传递的拷贝,当参数是结构复杂的结构体时,就大大的浪费存储了。
所以,使用const 引用可以在保证参数不被修改的前提下,防止数据的值传递拷贝。
最近,在看函数模板时
《C++ Primer》(第五版)581页,提到编写泛型代码的两个重要原则,其中之一就是:
模板中的函数参数是const的引用
其给出的解释就很清楚了:
通过将函数参数设定为const的引用,我们保证了函数可以用于不能拷贝的类型。当然大多数类型都是允许拷贝的,但是不允许拷贝的类类型也是存在的。
相关文章推荐
- future(promise,async) c++11异步库,线程的代替品
- 解析C++编程中virtual声明的虚函数以及单个继承
- c++中常量 常对象
- 详解C++成员函数的override和final说明符的用法
- windows 64 intel 安装Numpy 报错Microsoft Visual C++ 9.0 is required Unable to find
- 面试中的C++常见问题
- 全面解析C++中的析构函数
- C++:运算符重载3(单目:日期自增)
- C++:运算符重载2(双目:复数的减法)
- C语言#ifdef,#ifndef,#endif,#define详解
- c++ 继承
- C语言实现strcat
- C语言中volatile关键字的作用
- C语言 百炼成钢8
- c语言程序的存储区域与const关键字的使用方法
- C语言-函数指针
- C++:运算符重载1(分数的加法)
- C语言实现strcmp
- C++:抽象类(圆与正方形)
- C++:多态性2(图形的面积)