C++中的mutable关键字

mutable是C++中的一个关键字,它用来修饰类的成员变量。

当我们将一个成员变量声明为mutable时,就意味着这个成员变量可以被类的任何方法修改,即使这个方法是const类型的。这是因为mutable关键字可以打破const类型的限制,使得const类型的方法也可以修改成员变量的值。

需要注意的是,使用mutable关键字可能会破坏程序的const安全性。因此,在使用时需要谨慎考虑其适用性,并确保不会导致意外的副作用。

例如,下述代码中,

#include 

using namespace std;

class A {
public:
    void add() const{
        a += 1;
        return;
    }
private:
    int a;
};

int main() {
    return 0;
}

在类Aadd()方法中,由于该方法是const的,即不能修改类的成员变量,而它的实现中,却修改了成员变量a的值。故编译时报错,

a.cpp: In member function 'void A::add() const':
a.cpp:8:11: error: assignment of member 'A::a' in read-only object
    8 |         a += 1;
      |         ~~^~~~

解决方法为,用mutable修饰成员变量a,如下所示,

#include 

using namespace std;

class A {
public:
    void add() const{
        a += 1;
        return;
    }
private:
    mutable int a;
};

int main() {
    return 0;
}

此时,编译成功。

你可能感兴趣的:(C++学习,c++,开发语言)