在C ++中,具体来说,例如:

static const int x = 0 ;

const int x = 0 ;

对彼此而言static作为链接和存储类规范符(即函数内部和外部)。

答案

在文件范围内,C ++没有差异。const使内部链接成为默认值,并且所有全局变量具有静态寿命。但是第一个变体在C中具有相同的行为,因此可能是使用它的一个很好的理由。

在函数中,可以从参数计算第二版。在C或C ++中,它不必像其他语言所需的那样是编译时常数。

在类中,基本上与功能相同。实例const值可以在ctor-Initializer-list 。Astatic const是在启动初始化期间设置的,并且在程序的其余部分中保持不变。(注意:用于的代码static成员看起来有些不同,因为声明和初始化是分开的。)

记住,在C ++中,const方法read-only , 不是constant 。如果您有指针 - const然后,程序的其他部分可能在不查找时会更改价值。如果变量已定义const,那么在初始化后没有人可以更改它,但是初始化仍然可以任意复杂。

来自: stackoverflow.com