mutable:易变的,意思和volatile相近,但是两个关键字的用法不同。volatile主要应用于多线程,这里不做详细讨论。
穷则变,变则通,mutable就是这样,先讨论下mutable在类中的应用:
- 在类中,mutable只能用于修饰类的数据成员。
- 其作用在于说明在成员总是可以改变的,即使是在该类的const对象的const成员函数中。
- mutable和const不能同时使用。
//来一个计数器的实例吧
class Mutable {
public:
mutable int Count = 0;
int increase()const {
return Count++;
}
};
int main() {
std::cout << "object is writeable and readable." << std::endl;
Mutable m;
std::cout << m.increase() << std::endl;
std::cout << m.increase() << std::endl;
std::cout << m.increase() << std::endl;
std::cout << "object is readonly." << std::endl;
Mutable const const_m;
std::cout << const_m.increase() << std::endl;
std::cout << const_m.increase() << std::endl;
std::cout << const_m.incr