C++中的mutable关键字

在C++中mutable关键字正如字面意思所示,表示「可变的」之意。一般在以下两种情况中使用较多,一是修饰类中的变量,用来突破const的限制,二是在Lambda表达式中使用,用来捕获修改表达式之外的变量值。

下面我们就针对这两种使用场景逐个介绍。

mutable修饰类的成员变量

以下实例代码有一个类Person,内部有一个age成员变量表示年龄,有一个被const修饰的公共方法获取年龄:

#include 
class Person{
public:
    explicit Person(int a):age(a){

    }
    ~Person(){

    }
    int getAge() const{
        return age;
    }
private:
    int age{18};
};

int main() {
    const Person person(20);
    std::cout