问题描述
如果函数定义仍然忽略参数,是否有任何理由在函数声明中包括参数的'const'限定词?我以为C ++编译器会在强制声明'const'的情况下强制使用它,但事实并非如此。
// Compiles without warnings.
void foo(const int x);
void foo(int x) {}
int main() {foo(0); return 0;}
解决方法
不,没有充分的理由这样做。 * 。
我认为即使在定义中也要在声明中添加const
也是一个坏主意。为什么?因为语言在声明中忽略了它,所以不能保证该定义将拥有它。无论如何,它都是实现细节(本质上是选择使用const局部变量),因此,如果需要,它应该仅出现在定义中。
*“ that”指的是顶级const。语言不会忽略指向const的指针或对const的引用。