Constants(Chapter 8 of Thinking in C++)
To put everything out in the open, you should use the mutable keyword in the class declaration to specify that a particular data member may be changed inside a const object.
The syntax of volatile is identical to that for const, but volatile means “This data may change outside the knowledge of the compiler.”