在C++中的存储说明符有以下几种:
- auto(在c++中不再是说明符)
- register
- static
- extern
- thread_local(C++11新增)
- mutable
注意:
- 在C++11之前,可以在变量中定义中声明为自动变量;但是在C++11中auto用于自动类型推断。
- 关键字static被用在作用域为整个文件中的声明时,表示内部链接性;被用于局部声明中,表示局部变量的存储持续性为静态的。
- 关键字extern表示引用声明,引用在其他地方定义的变量。
- thread_loacal表示变量的持续性和所属的线程持续性相同。犹如常规静态变量对于整个程序一样。其生命周期为线程的声明周期。
- mutable表示即使结构或者类中的变量为const,其中某个成员值也可以被改变。比如:
struct Student {
mutable int age;
char name[10];
int grade;
};
const Student S = { 12, "lama", 90 };
S.age = 14;//正确,因为mutable关键字
S.grade = 14;//错误,因为const关键字
cv-限定符(const 、volatile)
const
定义:const声明该变量被初始化之后不能再更改其值。