在前向声明中使用 'const' 作为函数参数

Use of 'const' for function parameters in forward declarations

如果函数定义忽略它们,是否有任何理由在函数声明中包含参数的 'const' 限定符?我假设 C++ 编译器会强制使用 'const' 如果它是前向声明的,但情况似乎并非如此。

// Compiles without warnings.
void foo(const int x);
void foo(int x) {}
int main() {foo(0); return 0;}

不,没有充分的理由这样做*

我认为在声明中添加 const 无论如何都是一个坏主意,即使定义中也包含它。为什么?因为语言在声明中忽略了它,所以不能保证定义中会有它。在任何情况下,它都是一个实现细节(本质上,选择使用 const 局部变量),因此如果需要,它应该只出现在定义中。


* “那个”指的是 top-level 常量。指向 const 的指针或对 const 的引用不会被语言忽略。