在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
,那么在初始化后没有人可以更改它,但是初始化仍然可以任意复杂。