亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

西乌珠穆沁旗| 盐山县| 新蔡县| 牙克石市| 壶关县| 清远市| 喀喇沁旗| 罗平县| 天水市| 贡觉县| 太康县| 民丰县| 乌审旗| 马龙县| 汉阴县| 论坛| 福建省| 深圳市| 鄂温| 府谷县| 伽师县| 花莲县| 汉沽区| 绥中县| 北票市| 银川市| 石门县| 分宜县| 平阳县| 霍州市| 固原市| 常山县| 宽城| 新郑市| 晋中市| 竹北市| 娄底市| 兴山县| 石景山区| 沂水县| 云龙县|