在C++中,我們有時可以將構(gòu)造函數(shù)用作自動類型轉(zhuǎn)換函數(shù)。但這種自動特性并非總是合乎要求的,有時會導(dǎo)致意外的類型轉(zhuǎn)換,因此,C++新增了關(guān)鍵字explicit,用于關(guān)閉這種自動特性。即被explicit關(guān)鍵字修飾的類構(gòu)造函數(shù),不能進行自動地隱式類型轉(zhuǎn)換,只能顯式地進行類型轉(zhuǎn)換。
注意:只有一個參數(shù)的構(gòu)造函數(shù),或者構(gòu)造函數(shù)有n個參數(shù),但有n-1個參數(shù)提供了默認值,這樣的情況才能進行類型轉(zhuǎn)換。
下面通過一段代碼演示具體應(yīng)用(無explicit情形):
上述四種構(gòu)造函數(shù):
構(gòu)造函數(shù)1沒有參數(shù),無法進行類型轉(zhuǎn)換!
構(gòu)造函數(shù)2有一個參數(shù),可以進行類型轉(zhuǎn)換,如:Demo test; test = 12.2;這樣的調(diào)用就相當(dāng)于把12.2隱式轉(zhuǎn)換為Demo類型。
構(gòu)造函數(shù)3有兩個參數(shù),且無默認值,故無法使用類型轉(zhuǎn)換!
構(gòu)造函數(shù)4有3個參數(shù),其中兩個參數(shù)有默認值,故可以進行隱式轉(zhuǎn)換,如:Demo test;test = 10; 。
下面講述使用了關(guān)鍵字explicit的情況:
在上述構(gòu)造函數(shù)2中,由于使用了explicit關(guān)鍵字,則無法進行隱式轉(zhuǎn)換。即:Demo test;test = 12.2;是無效的!但是我們可以進行顯示類型轉(zhuǎn)換,如:
到此這篇關(guān)于C++ explicit關(guān)鍵字的使用詳解的文章就介紹到這了,更多相關(guān)C++ explicit關(guān)鍵字的使用內(nèi)容請搜索html5模板網(wǎng)以前的文章希望大家以后多多支持html5模板網(wǎng)!