¿Por qué se necesita la palabra clave mutable en C++? ¿Solo para métodos const?
¡Hola a todos! Estoy aprendiendo C++ y me encontré con la palabra clave `mutable`. En los libros de texto escriben que permite modificar un miembro de la clase incluso en métodos `const`. Pero me parece extraño: ¿por qué cambiar algo en un método que está marcado como constante? ¿Acaso esto no viola la idea misma de la constancia?
Aquí hay un ejemplo que escribí:
```cpp
class Counter {
private:
mutable int accessCount = 0;
int value = 0;
public:
int getValue() const {
accessCount++; // funciona gracias a mutable
return value;
}
int getAccessCount() const {
return accessCount;
}
};
```
Entiendo que `accessCount` es un contador de accesos al getter. Pero ¿no sería mejor simplemente quitar `const` del método `getValue()`? ¿O usar `const_cast`? Me parece que `mutable` es una especie de "escape" que hace que el código sea menos predecible.
Por favor, díganme: ¿hay otros usos de `mutable`? ¿O este es el único escenario? Quizás me estoy perdiendo algo y