Avatar ·

为什么C++中需要mutable关键字?仅用于const方法吗?

大家好!我正在学习C++,遇到了`mutable`关键字。教材上说,它允许即使在`const`方法中也能修改类的成员。但我觉得这很奇怪——为什么要在标记为const的方法中修改任何东西呢?这难道不违反常量性的理念吗? 下面是我写的一个例子: ```cpp class Counter { private: mutable int accessCount = 0; int value = 0; public: int getValue() const { accessCount++; // 由于mutable而生效 return value; } int getAccessCount() const { return accessCount; } }; ``` 我理解`accessCount`是对getter访问次数的计数器。但为什么不直接从`getValue()`方法中移除`const`呢?或者使用`const_cast`?我觉得`mutable`像是一种“后门”,让代码变得不那么可预测。 请告诉我,`mutable`还有其他用途吗?还是说这是唯一的场景?也许我遗漏了什么,但