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