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;
};