按值传递时"const"不是多余的吗?
Isn't "const" redundant when passing by value?
我在阅读我的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
}