1. mutable只能用来修饰类的非静态、非常量的数据成员,我们知道,一个对象的状态由该对象的非静态数据成员决定,所以随着数据成员的改变,对象的状态也会随之改变。如果一个类的成员函数被声明成const类型,表示该函数不会改变对象的状态,也就是说该函数不会修改类的非静态数据成员,但是有些时候在该类的函数中对类的数据成员进行赋值,这时候就需要mutable关键字出场了。
2. volatile关键字,告诉编译器不要持有变量的临时拷贝。
3. explicit关键字,禁止单参数的构造函数被用于自动类型转换。