Warum wird das Schlüsselwort mutable in C++ benötigt? Nur für const-Methoden?
Hallo zusammen! Ich lerne C++ und bin auf das Schlüsselwort `mutable` gestoßen. In Lehrbüchern steht, dass es erlaubt, ein Klassenmitglied sogar in `const`-Methoden zu ändern. Aber das erscheint mir seltsam – warum sollte man überhaupt etwas in einer Methode ändern, die als konstant markiert ist? Widerspricht das nicht der ganzen Idee der Konstantheit?
Hier ist ein Beispiel, das ich geschrieben habe:
```cpp
class Counter {
private:
mutable int accessCount = 0;
int value = 0;
public:
int getValue() const {
accessCount++; // funktioniert wegen mutable
return value;
}
int getAccessCount() const {
return accessCount;
}
};
```
Ich verstehe, dass `accessCount` ein Zugriffszähler für den Getter ist. Aber wäre es nicht besser, einfach das `const` aus der Methode `getValue()` zu entfernen? Oder `const_cast` zu verwenden? Mir scheint, dass `mutable` so eine Art "Schlupfloch" ist, das den Code weniger vorhersagbar macht.
Könnt ihr mir bitte sagen, ob `mutable` andere Anwendungen hat? Oder ist das das einzige Szenario? Vielleicht übersehe ich etwas und
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen
Blogs