mutable
mutable指出即使结构或类变量为const, 其某个成员也可以被修改, 例如:
struct data
{
char name[30];
mutable int accesses;
};
const data veep = {"Tom", 100};
// 不允许的
strcpy(veep.name, "Joye");
// mutable修饰的变量可以被修改
veep.accesses++;
const
const修饰的变量是常量, 也就是不能被修改.
但C++中const限定符对默认存储类型稍有影响,
在默认情况下全局变量的链接性为外部的, 但const修饰的全局变量的链接性为内部的, 也就是说C++看来, 全局const定义就下使用了static说明符一样, 例如:
const int fingers = 10;
static const int fingers2 = 10;
int main()
{
...
}
这里的fingers和fingers2的作用域都是本文件可见, fingers不再是外部可见了.
如果处于某种原因想让const修饰的常量的链接性为外部的, 则可以使用extern关键字来覆盖默认的内部链接性
extern const int states = 50;