我最近发现您可以在函数声明及其实现中的值参数中添加和删除 cv 限定符。例如:
F.h
f(const int i);
F.cpp
f(int i) { i++; }
测试.cpp
#include "F.h"
f(0);
将调用 f(int i) 实现。由于它是按值复制,因此我认为代码编译没有问题。但是任何人都可以想象这样一种情况,将 const 添加到上面所做的声明中是有用的吗?为什么有可能呢?也许有人可以提供更有用的应用程序?
最佳答案
函数参数上的顶级 CV 限定符将被忽略,即它们不是函数签名的一部分。相反,如果您愿意,它们是函数实现 的一部分,因为它们限定了与形式函数参数相对应的局部变量。因此,如果您愿意,您可以在函数定义中限定函数参数:
int power(int val, int n, int base);
int power(int val, int n, const int base)
{
while (n --> 0) val *= base;
return val;
}
不过,如果定义中的函数参数与声明中的不同,有些人会觉得很冒犯。这是品味和风格的问题。限定参数的好处可能很小,尽管在记录您不打算更改变量方面对实现有一定的值(value)。
关于c++ - 为什么在声明中将 cv 限定符添加到值参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21147704/