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

问题描述

如果函数定义仍然忽略参数,是否有任何理由在函数声明中包括参数的'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的引用。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...