C++ Primer Plus书之--C++ mutable和const

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;

猜你喜欢

转载自blog.csdn.net/c1392851600/article/details/84845346