mutable的英文意思是“可变的、易变的”。它在C++中的作用是:被定义为mutable的成员变量能在const成员函数中被修改。它使为了突破const的限制而设置的。
众所周知,如果一个成员函数不改变类的对象的状态,通常把这个成员函数定义为const。不过有时候,的确需要修改与对象的状态无关的成员变量,这时mutable就发挥作用了。例如:
class CTest
{
public:
CTest() : m_nCounter(0){}
void OutPut() const
{
cout << m_nCounter << endl;
m_nCounter++;
}
private:
mutable int m_nCounter;
};
上述例子中,如果m_nCounter不被定义为mutable,则系统报错:error C2166: 左值指定 const 对象。