当我遇到计算立方体体积的函数时,我正在阅读我的C ++书籍(Deitel)。代码如下:
double cube (const double side){
return side * side * side;
}
使用“const”限定符的解释是这样的:“const qualified应该用于强制执行最小权限原则,告诉编译器该函数不会修改变量端”。
我的问题:这里不使用“const”冗余/不必要,因为变量是按值传递的,所以函数无论如何都无法修改它?
答案 0 :(得分:101)
const
限定符可防止函数内的代码修改参数本身。当函数大于普通大小时,这种保证可以帮助您快速阅读和理解函数。如果您知道side
的价值不会发生变化,那么您在阅读时不必担心随时跟踪其价值。在某些情况下,这甚至可以帮助编译器生成更好的代码。
一个非常微不足道的人这样做是理所当然的,因为它通常是好的风格。
答案 1 :(得分:49)
您可以这样做:
int f(int x)
{
x = 3; //with "const int x" it would be forbidden
// now x doesn't have initial value
// which can be misleading in big functions
}