Avatar ·

Pourquoi le mot-clé mutable en C++ ? Uniquement pour les méthodes const ?

Bonjour à tous ! J'apprends le C++ et je suis tombé sur le mot-clé `mutable`. Dans les manuels, il est écrit qu'il permet de modifier un membre de classe même dans les méthodes `const`. Mais cela me semble étrange — pourquoi changer quoi que ce soit dans une méthode marquée comme constante ? Cela ne viole-t-il pas l'idée même de constance ? Voici un exemple que j'ai écrit : ```cpp class Counter { private: mutable int accessCount = 0; int value = 0; public: int getValue() const { accessCount++; // fonctionne grâce à mutable return value; } int getAccessCount() const { return accessCount; } }; ``` Je comprends que `accessCount` est un compteur d'accès au getter. Mais ne serait-il pas mieux de simplement enlever `const` de la méthode `getValue()` ? Ou d'utiliser `const_cast` ? Il me semble que `mutable` est une sorte de "passoire" qui rend le code moins prévisible. Dites-moi, s'il vous plaît, y a-t-il d'autres utilisations de `mutable` ? Ou est-ce le seul scénario ? Peut-être que je manque quelque chose et