mutable是一個好玩的C++關鍵字,也是我第一次遇到。於是查了查msdn,結果發現果然是好玩的關鍵字。
首先,它只能修飾非const,非static的類數據成員。
其次,它用來突破const函數。
再次,它就這麼一個功能。
class X
{
public:
// 在邏輯上GetFlag只是獲取我的m_flag狀態,所以修飾爲const
// 但是,我需要知道其中一些動態的狀態,所以mutable就誕生
// 了,而且專門爲此而誕生。
bool GetFlag() const
{
m_accessCount++;
return m_flag;
}
private:
bool m_flag;
// 本關鍵字的遊戲規則是非const,非static
mutable int m_accessCount;
};
總結:思路簡單,設計簡單,功能簡單。