我找到了一些很棒的文章和一本书来解释使用 const 的优点:
我可以向您提出以下格言吗?
如果一个对象/变量可以被限定为常量,它应该是。在最坏的情况下,它不会花费任何费用。充其量,您将记录对象/变量在代码中的作用,这将使编译器有机会进一步优化您的代码。
一些编译器忽略了使用“const”来挖掘优化的潜力,这导致许多专家在可以使用常量参数时忽略了按值使用常量参数。这种做法需要更严格,但不会有害。在最坏的情况下,您不会失去任何东西,但您也不会获得任何东西,而在最好的情况下,您会从使用这种方法中获利。
对于那些似乎不理解 const 在函数/方法的按值参数中的效用的人...这里有一个简短的示例来解释原因:
.cpp
void WriteSequence(int const *, const int);
int main()
{
int Array[] = { 2, 3, 4, 10, 12 };
WriteSequence(Array, 5);
}
#include <iostream>
using std::cout;
using std::endl;
void WriteSequence(int const *Array, const int MAX)
{
for (int const * i = Array; i != Array + MAX; ++i)
cout << *i << endl;
}
如果我去掉 int MAX 前面的 const 并在里面这样写 MAX + 1 会发生什么?
void WriteSequence(int Array[], int MAX)
{
MAX += MAX;
for (int * i = Array; i != Array + MAX; ++i)
cout << *i << endl;
}
那么你的程序会崩溃!现在,为什么有人会写“MAX += MAX;” ?也许是人为错误,也许程序员那天感觉不舒服,或者程序员根本不知道如何编写 C/C++ 代码。如果你有 const,代码甚至都不会编译!
安全代码是好代码,当你拥有它时添加“const”不需要任何成本!
这是一个非常相似的问题的不同帖子的答案:
"const 是没有意义的,当参数
是按值传递的,因为你不会
正在修改调用者的对象。”
错了。
这是关于自我记录您的代码
和你的假设。
如果您的代码有很多人在工作
在它上面,你的功能是
非平凡的那么你应该标记
"const" 你的任何东西
能够。写工业实力的时候
代码,你应该总是假设
你的同事是精神病患者
尽他们所能得到你
(尤其是因为通常是你自己
将来)。
另外,正如有人提到的
早些时候,它可能会帮助编译器
稍微优化一下(虽然它是一个
远射)。
这里是链接:answer。