Mutable Data Members (C++)


The latest version of this topic can be found at Mutable Data Members (C++).

This keyword can only be applied to non-static and non-const data members of a class. If a data member is declared mutable, then it is legal to assign a value to this data member from a const member function.

mutable member-variable-declaration;  

For example, the following code will compile without error because m_accessCount has been declared to be mutable, and therefore can be modified by GetFlag even though GetFlag is a const member function.

// mutable.cpp  
class X  
   bool GetFlag() const  
      return m_flag;  
   bool m_flag;  
   mutable int m_accessCount;  
int main()