Avatar ·

¿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