C++關鍵字 explicit


之前在項目中有看到過explicit關鍵字,不過不清楚是什麼作用。

網上大致查了一下。

首先它僅限於描述構造函數,然後它的作用是避免隱式調用構造函數。


什麼時候會觸發隱式調用呢?

舉個栗子:


//測試類Test 
class Test
{
public:
	
	Test()
	{
		m_iValueA = 0;
		m_iValueB = 0;
	}
	
	explicit Test(int iA,int iB = 4)
	{
		m_iValueA = iA;
		m_iValueB = iB;
	}
	
	int m_iValueA;
	int m_iValueB;
};

int main()
{
	Test testTemp1(5);
	Test testTemp2 = 5;
}
 

這裏的Test testTemp2 = 5;就是在隱式調用Test(int iA,int iB = 4)這個構造函數,而因爲聲明瞭explicit關鍵字,所以它的編譯時無法通過的。

它的作用在於禁止一些我們未察覺到的隱式調用,避免程序中意料之外的情況發生。


(代碼借鑑於http://blog.csdn.net/chollima/article/details/3486230




發佈了55 篇原創文章 · 獲贊 14 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章