为什么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`还有其他用途吗?还是说这是唯一的场景?也许我遗漏了什么,但