在编译后你会发现,其实const被编译成了static的了。也就是说const本质其实就是静态的。
只不过是const的值确定于编译时,属于类型级。它被编译后保存在模块的元数据中。因为它默认是静态的,所有不能与static同时使用。
同时声明const字段时必须赋初始值,其类型只能是基元类型,并且在构造函数中无法更改它的值。
因此,对于PI这种恒定不变的数值建议声明为常量。 ------解决方案-------------------- const int a = 10;
int b = a;
编译之后你会发现
int b = 10;
跟a一点关系都没有了。
运行时的a其实一点意思都没有。
而static 作为变量,在运行时是有意义的,反而在编译时是没有意义的。
显著的区别在于。
如果你在A.dll中定义了一个const int a= 10;
在B.dll中使用了 int b = A.a;
那么将来有一天,你的a需要改为20。
那么你的B.dll也需要重新编译。