【发布时间】:2012-02-01 14:38:03
【问题描述】:
我在阅读我的 C++ 书籍 (Deitel) 时遇到了一个计算立方体体积的函数。代码如下:
double cube (const double side){
return side * side * side;
}
使用“const”限定符的解释是这样的:“const 限定符应该用于强制执行最小权限原则,告诉编译器函数不修改变量端”。
我的问题:这里使用“const”不是多余/不必要的,因为变量是按值传递的,所以函数无论如何都不能修改它?
【问题讨论】:
-
这里
const的意思是不能修改cube()方法内部的side参数,以免出现意外行为。 -
有时事情更多的是“良好实践”而不是必要性。我认为这是其中之一。
-
我认为答案很好地解释了你为什么要这样做,但我只是将它添加到外部调用者中,
const是 多余的并且不是函数签名的一部分。这意味着您可以在函数声明中将其关闭,而无需更改任何内容。如果由于某种原因你想让你的代码更难维护,你也可以稍后删除它,并且它不会影响调用代码。 -
我不喜欢它的一件事是它迫使我要么 (a) 使
const在声明中可见,但它没有意义,或者 (b) 使声明和定义不一致。我想解决办法是克服我对 (b) 的疑虑。 -
在 Java 中,在函数内声明匿名类时,需要在同一位置使用
final关键字才能使闭包正常工作。 C++ 可能也一样吗?
标签: c++ constants pass-by-value