Mutable關鍵字

Mutable

(1)mutable的意思是“可變的,易變的”,跟C++中的const是反義詞。

(2)在C++中,mutable也是爲了突破const的限制而設置的。被mutable修飾的變量,將永遠處於可變的狀態,即使在一個const函數中

#include 

using namespace std;



class TestMutable

{

public:

    TestMutable(){i=0;}

    int Output() const

    {

        return i++; //error C2166: l-value specifies const object

    }

private:

    int i;

};



int main()

{

   TestMutable testMutable;

   cout<<testMutable.Output()<<endl;

   return 0;

}

顯然i++在const修飾的函數裏是編譯通不過的。

#include 

using namespace std;



class TestMutable

{

public:

    TestMutable(){i=0;}

    int Output() const

    {

        return i++; 

    }

private:

    mutable int i;

};



int main()

{

   TestMutable testMutable;

   cout<<testMutable.Output()<<endl;

   return 0;

}

在 int i 前面加上 mutable上面就能編譯通過了,馬上可以看出關鍵字mutable的作用了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章