通过值时,“const”不是多余的吗?

时间:2012-01-03 15:06:11

标签: c++ const pass-by-value

当我遇到计算立方体体积的函数时,我正在阅读我的C ++书籍(Deitel)。代码如下:

double cube (const double side){
    return side * side * side;
}

使用“const”限定符的解释是这样的:“const qualified应该用于强制执行最小权限原则,告诉编译器该函数不会修改变量端”。

我的问题:这里不使用“const”冗余/不必要,因为变量是按值传递的,所以函数无论如何都无法修改它?

2 个答案:

答案 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

}