传递值时不是“const”冗余吗?
当我遇到一个函数来计算立方体的体积时,我正在阅读我的C ++书(Deitel)。 代码如下:
double cube (const double side){ return side * side * side; }
使用“const”限定符的解释是这样的:“const限定符应该用来强制执行最小特权原则,告诉编译器该函数不修改variables端”。
我的问题 :是不是在这里使用“const”冗余/不必要,因为variables是通过值传递的,所以函数无法修改它?
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 }