一 存储类指定符
1 auto
- 自动存储期。(C++11 前)
- auto 不再是存储类指定符,它被用于指示类型推导。(C++11 起)
2 register
- 自动存储期。亦提示编译器将此对象置于处理器的寄存器。(C++17 前).
- 弃用(C++17起)
3 static
- 静态或线程存储期和内部链接。
4 extern
- 静态或线程存储期和外部链接。
5 thread_local
- 线程存储期。(C++11 起)
6 mutable
- 关键词 mutable 在 C++ 文法中是存储类指定符,尽管它不影响存储期或链接。
二 注意
- 在同一个声明中不能使用多个指定符,但thread_local除外,它可与static或extern结合使用
- extern 关键词亦可用于指定语言链接和显式模板实例化声明,但在这些情况中不是存储类指定符。
- 关键字register最初是由C语言引入的,建议编译器使用CPU寄存器来存储自动变量,只在提高访问变量的速度。C++11中只是显示指出变量是自动的,与原来的auto用途完全相同(未删除是为了老代码兼容)。
- mutable指出即使结构(或类)变量为const,其某个成员也可以被修改。