在前向声明中使用 '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 的引用不会被语言忽略。
如果函数定义忽略它们,是否有任何理由在函数声明中包含参数的 '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 的引用不会被语言忽略。