#include <iostream>
#include <vector>
class Example {
private:
int value;
mutable int cache; // 可变成员变量
public:
Example(int v) : value(v), cache(-1) {}
int getValue() const {
if (cache == -1) { // 如果缓存未设置,则计算并存储
cache = value * 2;
}
return cache;
}
void setValue(int v) {
value = v;
cache = -1; // 当值改变时,重置缓存
}
};
int main() {
Example ex(10);
std::cout << "Initial value: " << ex.getValue() << std::endl;
ex.setValue(20);
std::cout << "After setting new value: " << ex.getValue() << std::endl;
return 0;
}
在这个示例中,mutable
关键字用于修饰类的成员变量 cache
。通常情况下,当一个对象是常量(即使用 const
修饰的对象或方法),其成员变量不能被修改。但是,mutable
允许在常量方法中修改该成员变量。
getValue()
是一个常量成员函数,它不会修改对象的状态,但为了优化性能,我们希望它可以更新缓存 cache
。setValue()
修改了对象的状态,并重置了缓存 cache
,以便下次调用 getValue()
时重新计算。通过这种方式,mutable
提供了一种机制,在不影响对象逻辑不变性的前提下,允许某些特定成员变量在常量方法中被修改。
上一篇:c++ count
下一篇:c++爬虫
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站