当引用作为函数参数时,如果在函数体内部不会修改引用所绑定的数据,那么请尽量为该引用添加 const 限制。
下面的例子演示了 const 引用的灵活性:
#include
using namespace std;
double volume(const double &len, const double &width, const double &hei){
return len*width*2 + len*hei*2 + width*hei*2;
}
int main(){
int a = 12, b = 3, c = 20;
double v1 = volume(a, b, c);
double v2 = volume(10, 20, 30);
double v3 = volume(89.4, 32.7, 19);
double v4 = volume(a+12.5, b+23.4, 16.78);
double v5 = volume(a+b, a+c, b+c);
printf("%lf, %lf, %lf, %lf, %lf\n", v1, v2, v3, v4, v5);
return 0;
}
概括起来说,将引用类型的形参添加 const 限制的理由有三个:
- 使用 const 可以避免无意中修改数据的编程错误;
- 使用 const 能让函数接收 const 和非 const 类型的实参,否则将只能接收非 const 类型的实参;
- 使用 const 引用能够让函数正确生成并使用临时变量。
如果不用const修饰引用,传递的时候不能是 9 a+9这种常量或者表达式,使用const 生成一个临时变量的引用,会兼容许多表达式
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)