当引用作为函数参数时,如果在函数体内部不会修改引用所绑定的数据,那么请尽量为该引用添加 const 限制。
下面的例子演示了 const 引用的灵活性:
#includeusing 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, %lfn", v1, v2, v3, v4, v5); return 0; }
概括起来说,将引用类型的形参添加 const 限制的理由有三个:
- 使用 const 可以避免无意中修改数据的编程错误;
- 使用 const 能让函数接收 const 和非 const 类型的实参,否则将只能接收非 const 类型的实参;
- 使用 const 引用能够让函数正确生成并使用临时变量。
如果不用const修饰引用,传递的时候不能是 9 a+9这种常量或者表达式,使用const 生成一个临时变量的引用,会兼容许多表达式



