explicit、mutable和volatile關鍵字的作用||c++

目錄

1.explicit

2.mutable

3.volatile


1.explicit

explicit(明確的)用於修飾只有一個參數的類的構造函數,防止隱式生成對象(通過此構造函數)。

如下:

class Num
{
public:
	Num(int b)
	{
		a = b;
		cout << "拷貝構造函數調用" << endl;
	}
private:
	int a;
};
int main()
{
	Num num = 10;
	return 0;
}

如上程序,會隱式的調用構造函數,程序運行結果如下:

如果我們給構造函數前面加上關鍵字explicit,這種隱式的轉換不會發生,程序報錯。

2.mutable

mutable(易變的)用來修飾結構體或者類中的變量,被修飾成mutable的變量能突破const的限制,成爲永遠可變的變量。

如下例所示:

# include<iostream>
using namespace std;
class Test
{

public:
	Test(int num) :_num(num) {}
	void Print() const
	{
		//被聲明成const的函數不能修改成員變量
		this->_num = 10;//由於_num被聲明爲mutanble,因此次此處是可以修改的
		cout << _num << endl;
	}
private:
	mutable int _num;
};
int main()
{
	Test test(5);
	test.Print();
	return 0;
}

打印結果如下:

3.volatile

volatile的中文意思爲不穩定的、易變的。

關於volatile的解析,我發現菜鳥教程上講解的挺容易理解的,volatile詳解

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