C++ mutable关键字

来源:互联网 发布:大智慧mac版使用教程 编辑:程序博客网 时间:2024/06/15 15:59

引言:对于类的成员函数来说,如果它不修改类的状态,一般将其声明为const函数. 但是如果我们想在类的const成员函数中修改与类的状态无关的成员变量,那么该怎么做呢?答案是使用mutable关键字。


mutable关键字是为了突破const关键字的限制而引入的,修饰一个成员变量,表示这个成员变量在const函数中也是可以被修改的。mutable关键字只能修饰类的非静态和非常量的成员变量,即不能与static和const连用。

示例如下:

class Test{public:    Test() : mValue(0)    {    }    inline void Output() const //仅用于输出并不会修改类的状态,但会修改非状态成员变量.    {        mValue++;        cout << "Output the object: " << this << endl;    }    inline void GetOutputTimes() const { return mValue; }private:    mutable int mValue;//表示类对象输出的次数.};

在以上代码段中,const类型的成员函数Output()会修改成员变量mValue。如果不将mValue声明为mutable类型是不行的。

int main(){    Test* pObj = new Test();    pObj->Output();    pObj->Output();    cout << pObj->GetOutputTimes() << endl;//输出2.    return 0;}
0 0
原创粉丝点击