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;
};
总结:思路简单,设计简单,功能简单。