中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中mutable有什么用

發布時間:2020-08-17 10:27:03 來源:億速云 閱讀:175 作者:小新 欄目:開發技術

這篇文章主要介紹了C++中mutable有什么用,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

代碼編譯運行環境:VS2017+Win32+Debug

mutalbe的中文意思是“可變的,易變的”,是constant(即C++中的const)的反義詞。在C++中,mutable也是為了突破const的限制而設置的,被mutable修飾的變量將永遠處于可變的狀態。

mutable的作用有兩點:

(1)保持常量對象中大部分數據成員仍然是“只讀”的情況下,實現對個別數據成員的修改;
(2)使類的const函數可以修改對象的mutable數據成員。

使用mutable的注意事項:

(1)mutable只能作用于類的非靜態和非常量數據成員。
(2)在一個類中,應盡量或者不用mutable,大量使用mutable表示程序設計存在缺陷。

示例代碼如下:

#include <iostream>
using namespace std;

//mutable int test;//編譯出錯

class Student
{
	string name;
	mutable int getNum;
	//mutable const int test;  //編譯出錯
	//mutable static int static1;//編譯出錯
public:
	Student(char* name)
	{
		this->name=name;
		getNum=0;
	}
	string getName() const
	{
		++getNum;
		return name;
	}
	void pintTimes() const
	{
		cout<<getNum<<endl;
	}
};

int main(int argc, char* argv[])
{
	const Student s("張三");
	cout<<s.getName().c_str()<<endl;
	s.pintTimes();
	return 0;
}

程序輸出結果:

張三
1

mutable不能修飾const數據成員容易理解,因為mutable與const本是反義,同時修飾不是自相矛盾嗎。mutable不能修飾static數據成員,因為static數據成員存儲在Data段或BSS段,屬于類,不屬于類對象,那么常對象和常函數可以對其任意地修改,所以類的static數據成員根本不需要mutable的修飾,但對于常對象的數據成員則不可以被修改,若想修改,則需要mutable的修飾。示例代碼如下:

#include <iostream>
using namespace std;

class Student
{
	string name;	
public:
	static int test1;
	void modify() const
	{
		test1=15;
		cout<<test1<<endl;
	}
};

int Student::test1;//申明test1并按照編譯器默認的值進行初始化
int main(int argc, char* argv[])
{
	const Student s("張三");
	s.test1=5;//常對象可以修改靜態類的數據成員test1
	cout<<Student::test1<<endl;
	s. modify();//常函數修改
	return 0;
}

程序輸出結果是:

5
15

感謝你能夠認真閱讀完這篇文章,希望小編分享C++中mutable有什么用內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岗巴县| 隆林| 资阳市| 陇西县| 通道| 来宾市| 合阳县| 富顺县| 荣昌县| 平罗县| 丹凤县| 汉川市| 汽车| 马关县| 玉环县| 梁山县| 宜川县| 仪征市| 神池县| 全州县| 行唐县| 营口市| 九江市| 林州市| 师宗县| 同仁县| 武夷山市| 二连浩特市| 望都县| 肃南| 安图县| 罗平县| 禄丰县| 台北县| 大同市| 呼和浩特市| 偏关县| 庆阳市| 都昌县| 拉孜县| 潼南县|