91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

临洮县| 六枝特区| 溧水县| 灵宝市| 凤山市| 鹤峰县| 图木舒克市| 申扎县| 长汀县| 齐齐哈尔市| 景泰县| 福建省| 额敏县| 呼和浩特市| 仁布县| 永和县| 全南县| 万盛区| 越西县| 县级市| 建水县| 西藏| 博乐市| 康乐县| 河北区| 滦平县| 英吉沙县| 迭部县| 广饶县| 灯塔市| 麻栗坡县| 贺州市| 土默特左旗| 图片| 新田县| 介休市| 吉隆县| 盖州市| 改则县| 昌黎县| 龙游县|