【C++】Mutable關鍵字

mutable關鍵字是一個少用的關鍵字。而mutable的含義與const正好相反,當一個類的成員變量不能修改時,我們在其聲明處前添加const關鍵字進行修飾。但是,如果這個成員變量是可變的,那我們就使用mutable關鍵字修飾變量類型。
但我們會發現一個問題,那就是不使用const修飾的變量本身就是可以修改的,那爲什麼還要添加mutable關鍵字呢?這裏涉及到一個用法,也是關於mutable的最常用的基本用法了。直接給個例子就明白了。

class OutTestClass
{
public:
	OutTestClass()
	{
		count = 0;
		msg = "Hello, World!";
	}

public:
	void print() const
	{
		std::cout << msg << std::endl;
		++count;
	}

private:
	mutable int count;

	std::string msg;

}

我們可以看到,成員函數print被const修飾,表示不改變類的狀態和不修改類的成員變量。所以當我們在函數中修改普通成員變量時會報錯。但是我們卻在print方法中修改了count的值,但並不會出錯,這是因爲count變量被mutable關鍵字修飾。所以,當成員方法使用const修飾時,我們仍然可以使用其修改mutable修飾的變量。所以,mutable修飾的變量最好是與類的狀態無關。

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