按值传递时"const"不是多余的吗?

Isn't "const" redundant when passing by value?

本文关键字:多余 const 按值传递      更新时间:2023-10-16

我在阅读我的c++书(Deitel)时遇到了一个计算立方体体积的函数。代码如下:

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

使用"const"限定符的解释是这样的:"const限定符应该用于执行最小特权原则,告诉编译器函数不修改变量侧"。

我的问题:是不是使用"const"多余/不必要在这里,因为变量是通过值传递的,所以函数不能修改它?

const限定符防止函数内的代码修改参数本身。当函数的大小大于一般大小时,这样的保证可以帮助您快速阅读和理解函数。如果您知道side的值不会改变,那么您就不必担心在读取时跟踪它的值。在某些情况下,这甚至可以帮助编译器生成更好的代码。

相当多的人理所当然地这样做,认为这通常是一种良好的风格。

你可以这样做:

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
}