使用关键字const
有什么意义?例如,制作游戏时,要做的第一件事就是设置游戏的宽度和高度。大多数情况下,您将使用以下示例:
const int Width
和
const int height
现在我知道您应该那样做,因为屏幕的宽度和高度在整个游戏中都不会改变,但是这样做有什么意义呢?您可以在不使用const的情况下做同样的事情,它将可以正常工作。
这只是一个例子。所以我现在很困惑的是:
如果您始终不更改变量,则在任何地方使用const关键字的要点是什么?
非详尽原因清单:
软件工程(SWE)。 SWE不仅是编程,而是随着时间的推移与其他人一起编程。
const
允许显式表达一个不变式,它使您和其他人可以对代码进行推理。随着程序的变大,这些不变式不能仅仅被记住。这就是为什么用编程语言对它们进行编码会有所帮助的原因。
最佳机会。
知道某些值不会更改,编译器可以进行优化,否则将无法进行优化。为了最大程度地利用此值,constexpr
意味着将在编译时(而不只是在运行时)知道一个值。在潜在的多线程环境中,这一点变得更加重要。
示例:What kind of optimization does const offer in C/C++?
我忽略了整个程序分析,这将需要更长的答案,并且几乎可以肯定地不适用于通用C ++程序。
没有const
,您必须记住才能不更改变量。程序越大,越难。
它还有其他一些有用的效果:
const int a = 10;
int b[a]; // Doesn't work if `a` is not `const`.
// ...
void foo(const int &a) {};
void bar()
{
foo(42); // Doesn't work if the parameter is a non-const reference.
}
const
用于常量变量,这意味着没有人应该对其进行更改,或者const T &
用于将非平凡类型作为参数传递,或者用于使指针恒定,或者用于指针所指向的值([ C0])