文章

C++类型限定符简介

类型限定符如const、volatile修饰变量,控制访问权限和优化,保证程序行为可预测。

C++类型限定符简介

C++类型限定符简介

1. 严格意义的类型限定符(Type Qualifiers)

这些直接限定类型的行为,是最正统的“类型限定符”:

限定符说明
const不可修改,编译期常量或修饰函数签名(如 const int*
volatile禁止优化,值可能由外部(如硬件)改变
mutable允许 const 成员函数中修改此成员变量
restrictC++ 尚未标准支持,GCC/Clang 有扩展(类似 C99)
constexprC++11 起,编译期常量

2. 与类型/作用域密切相关的修饰符(存储类/函数限定符)

这些虽不属于传统“类型限定符”,但也改变类型/生命周期行为,常混用:

关键字类别说明
static存储类静态生命周期,函数内变量持久存在;类内不依赖实例
extern存储类引用外部符号(如头文件声明变量)
register存储类(已废弃)建议放入寄存器(现代编译器忽略)
thread_local存储类(C++11)每个线程一份变量
inline函数限定符建议编译器内联函数
virtual函数限定符表示支持多态
explicit构造函数限定符禁止隐式转换
friend访问控制允许访问类的私有成员
noexcept异常限定符(C++11)表示函数不会抛出异常
final类/虚函数限定符表示不能被继承/重写
override虚函数限定符表示重写父类虚函数

3. 用于类型推导/模板相关的修饰符(现代 C++)

关键字C++版本说明
autoC++11+自动类型推导
decltypeC++11+推导表达式的类型
constevalC++20编译期求值函数
constinitC++20编译期初始化全局/静态变量,但不是 constexpr
本文由作者按照 CC BY 4.0 进行授权