温馨提示×

C++中mutable关键字的用法示例有哪些

c++
小樊
84
2024-08-18 05:41:45
栏目: 编程语言

在C++中,mutable关键字通常用于类的成员函数中,用来指示一个成员变量可以在const成员函数中被修改。下面是几个mutable关键字的用法示例:

  1. 修改const成员函数中的mutable变量:
class MyClass {
public:
    void constFunction() const {
        mutableVar = 10;
    }

private:
    mutable int mutableVar;
};
  1. 在lambda表达式中使用mutable关键字:
int main() {
    int x = 5;
    auto lambda = [x]() mutable {
        x = 10;
        std::cout << x << std::endl;
    };

    lambda();
    std::cout << x << std::endl;

    return 0;
}
  1. 在多线程编程中使用mutable关键字来修改共享的变量:
#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关键字也可以用于同步访问共享变量。

0