Talvez você seja como eu, viciado em usar const, mais muitas vezes nos deparamos com métodos que precisamos alterar
algum atributo dentro de um método declarado como const
class Image
{
public:
void Draw() const;
private:
std::size_t m_BlitErrorCount;
}
Vejamos esse exemplo do metodo Draw da classe Image
precisamos implementar um contador de erros do SDL_BlitSurface (sinceramente não vejo utilidade isso)
void Image::Draw() const
{
if (SDL_BlitSurface(mSurface, NULL, Screen, rect) < 0)
{
m_BlitErrorCount++;
// O compilador acusa erro na linha acima
// pois não podemos modificar qualquer
// atributo dentro desse método declarado como const
}
}
Como solucionar?
Adicione a palavra reservada mutable na declaração de m_BlitErrorCount, ficando assim:
class Image
{
public:
void Draw() const;
private:
mutable std::size_t m_BlitErrorCount;
}
Veja também
Um outro caso para o uso da mutable é na implementação do design Organizando a janela em classes, de nosso amigo Vinícius, onde temos à seguinte declaração do método draw
virtual void draw() const = 0;
Usando a palavra reservada mutable na declaração do atributo usado internamente em draw você “burla” o const
Agora seu código compila sem erros

Até onde eu sei o uso de mutable não é muito recomendado, é só para casos muito concretos (realmente nunca precisei). Tem um artigo interessante, que discute o uso de mutable: http://www.highprogrammer.com/alan/rants/mutable.html
Eu também não recomendo usar ela, porem é bom saber que existe e para que serve, precisei usar apenas uma vez em um trecho da Wintermoon no exemplo Player no metodo draw (talvez eu realmente não precissa-se usar). Esse artigo é otimo, e eu já tinha lido ele antes de escrever este post. obrigado por comentar ;D
O exemplo que ele deu foi bom.
A palavra mutable não é recomendada quando envolve atributos que tem relação com o estado da classe. O que não é o caso, por exemplo, do contador de erros, variável tipicamente usada para logs, e que deveria ser imperceptível para um observador externo.
Eu também nunca precisei dela.
Mas… como uma das políticas do C++ é certamente dar poder ao programador para fazer tudo, seja isso bom ou não, é bom conhecer os recursos, e os impactos que ele pode causar.
Isto eh q eu chamo de um blog do underground ^^
nunca vi em nenhum curso essa funçao da C++
realment parabens
Valeu, realmente foi dificel achar um exemplo legal para usar nesse artigo…
quanto a mutable é meio rara alguem usar ou falar sobre ela, só vi a engine Ogre usar ela ate hoje (e a wintermoon claro)
[...] nosso artigo mutable, que raios é isso? agora irei demonstrar um segunda maneira de “burlar” o mesmo método const sem usar [...]