我应该声明一个永远不会更改为const变量的参数吗?

upd*_*liu 2 c++

可能重复:
函数参数使用'const'

例如,

void Func(int para);
Run Code Online (Sandbox Code Playgroud)

如果我知道我不想在Func(...)中更改para的值,我是否应该将para声明为“ const int”以保证这一点?即

void Func(const int para);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我认为

void Func(const int &para);
Run Code Online (Sandbox Code Playgroud)

有时不是合适的替代方法,因为const int&通常是由基础指针实现的,因此它基本上等效于

void Func(const int *p_para);
Run Code Online (Sandbox Code Playgroud)

《 C ++编码标准:101条规则》一书第31页说:“ void Func(const int para);” 不好,因为它会“混淆”头文件的阅读器。我不确定...

经过深思熟虑,我认为一个好的解决方案是将其声明为“ void Func(int para);”。并在实现它时使用“ void Func(const int para){...}”。我在“ void Func(const int para);”中发现“ const”一词。将被编译器静默删除...

Ala*_*kes 5

如果您完全这样做(有些人这样做),则应将const放在定义中(有用的地方),而不要放在声明中(在噪音的情况下,它不会影响调用者)。

所以:

void F(int param);

...


void F(int const param) {
   ...
}
Run Code Online (Sandbox Code Playgroud)