mutable
主要用于解决常量成员函数无法修改对象状态的限制.
在常量成员函数中, 允许修改关键字 mutable
修饰的变量.
#include <iostream>
class MyClass {
public:
MyClass(int value) : m_value(value) {}
void setValue(int value) const {
// 在常量成员函数中修改成员变量
m_value = value; // 使用mutable修饰m_value可以直接修改
std::cout << "Modified value: " << m_value << std::endl;
}
int getValue() const {
return m_value;
}
private:
mutable int m_value;
};
int main() {
MyClass obj(10);
std::cout << "Initial value: " << obj.getValue() << std::endl;
obj.setValue(20);
std::cout << "New value: " << obj.getValue() << std::endl;
return 0;
}
注意:mutable
只能用于非静态成员变量, 对于静态成员变量无效.
而常量成员函数通常设计为不修改对象的状态, 使用mutable
打破了这种约定, 使用时要慎重.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。