The new storage class specifier mutable allows you to declare class member data as 'modifiable even in a const object'. This allows you to distinguish between 'abstract const' (const to the user) and 'concrete const' (const to the implementation).

An example makes this clearer:

	class Object
	{
	public:
		void f();
		void g() const;
	private:
		int		m1;
		mutable int	m2;
	};
	void Object::f()	// can always modify object
	{
		m1 = 0;
		m2 = 1;
	}
	void Object::g() const	// object is const
	{
		// cannot modify m1
		m2 = 2;		// can modify m2 because
		       		// it is mutable
	}

A realistic example is a class that performs an expensive calculation whose value is returned by a const member function. That function can now cache the value in a mutable data member to save doing the calculation each time (in fact you'd need two data members: the cache itself and a mutable flag indicating whether the cache is valid).