1.volatile
volatile 修饰符的主要目的是提示编译器 该对象的值可能在编译器未监测到的情况下被
改变 因此编译器不能武断地对引用这些对象的代码作优化处理。
将成员函数声明为volatile volatile限定修饰符在 3.13 节介绍 如果一个类对象的值可能被修改的方式是编译器无法控制或检测的。例如 如果它是表示 I/O端口的数据结构则把它声明为 volatile 与 const 类对象类似 对于一个 volatile类对象 只有 volatile 成员函数 构造函数和析构函数可以被调用
class Screen {
public:
char poll() volatile;
//..........
};
char Screen::poll() volatile { ... }
2.explicit
防止隐式类型转换
3.mutable
mutable 修饰的数据成员永远不会是const 成员,即使它是一个const对象的数据成员。mutable成员总可以被更新,即使是在一个const成员函数中。
class Screen {
public:
// 成员函数
private:
string _screen;
mutable string::size_type _cursor; // mutable 成员
short _height;
short _width;
};