在C++中,mutable关键字通常用于类的成员函数中,用来指示一个成员变量可以在const成员函数中被修改。下面是几个mutable关键字的用法示例:
class MyClass {
public:
void constFunction() const {
mutableVar = 10;
}
private:
mutable int mutableVar;
};
int main() {
int x = 5;
auto lambda = [x]() mutable {
x = 10;
std::cout << x << std::endl;
};
lambda();
std::cout << x << std::endl;
return 0;
}
#include <iostream>
#include <mutex>
class Counter {
public:
void increment() const {
std::lock_guard<std::mutex> lock(mutex);
mutableVar++;
}
int getValue() const {
std::lock_guard<std::mutex> lock(mutex);
return mutableVar;
}
private:
mutable int mutableVar;
mutable std::mutex mutex;
};
int main() {
Counter counter;
counter.increment();
std::cout << counter.getValue() << std::endl;
return 0;
}
这些示例展示了mutable关键字的用法,它允许在const成员函数中修改类的成员变量,或者在lambda表达式中修改捕获的变量。在多线程编程中,mutable关键字也可以用于同步访问共享变量。