Para que serve a palavra-chave mutable em C++? Apenas para métodos const?
Olá a todos! Estou estudando C++ e me deparei com a palavra-chave `mutable`. Nos livros, dizem que ela permite alterar um membro da classe mesmo em métodos `const`. Mas acho isso estranho — por que alterar algo em um método marcado como constante? Isso não viola a própria ideia de constância?
Aqui está um exemplo que escrevi:
```cpp
class Counter {
private:
mutable int accessCount = 0;
int value = 0;
public:
int getValue() const {
accessCount++; // funciona por causa do mutable
return value;
}
int getAccessCount() const {
return accessCount;
}
};
```
Entendo que `accessCount` é um contador de acessos ao getter. Mas não seria melhor simplesmente remover o `const` do método `getValue()`? Ou usar `const_cast`? Parece-me que `mutable` é uma espécie de "brecha" que torna o código menos previsível.
Por favor, me digam: existem outros usos para `mutable`? Ou este é o único cenário? Talvez eu esteja perdendo algo e