在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關鍵字也可以用于同步訪問共享變量。