C++ explicit用法
C++中的explicit關(guān)鍵字只能用于修飾只有一個(gè)參數(shù)的類構(gòu)造函數(shù)嘲叔。
<font color=black>
它的作用是表明該構(gòu)造函數(shù)是顯示而非隱式的,跟他對(duì)應(yīng)的另一個(gè)關(guān)鍵字是implicit蛆挫,意思是隱藏的,類構(gòu)造函數(shù)默認(rèn)情況下即聲明為implicit蒋困。
作用
禁止隱式調(diào)用類內(nèi)的單參數(shù)構(gòu)造函數(shù)宾濒。
- 該關(guān)鍵字只能用來(lái)修飾類內(nèi)部的構(gòu)造函數(shù)
- 禁止隱式調(diào)用拷貝構(gòu)造函數(shù)
- 禁止類對(duì)象之間的隱式轉(zhuǎn)換
顯式轉(zhuǎn)換和隱式轉(zhuǎn)換
顯式轉(zhuǎn)換:
強(qiáng)制轉(zhuǎn)換
int a = 4;
float b = 5.56;
float c = (float) a;
隱式轉(zhuǎn)換:
在轉(zhuǎn)換時(shí)不給系統(tǒng)提示具體的顯示模型尊残,讓其自動(dòng)進(jìn)行轉(zhuǎn)換
int a = 4;
float b = 5.56;
b = a; //隱式轉(zhuǎn)換仗嗦,默認(rèn)把int類型轉(zhuǎn)換為float類型
example
class CxString
{
CxString (int size); //單參數(shù)構(gòu)造函數(shù)
}
CxString string1(24); (1)
CxString string2 = 10; (2)
CxString string3 = 'c'; (3) //size = 'c'的ASCII碼
添加explicit關(guān)鍵字:
class CxString
{
explicit CxString (int size); //單參數(shù)構(gòu)造函數(shù)
}
CxString string1(24); (1)
CxString string2 = 10; (2) //error可训!不可隱式轉(zhuǎn)換
CxString string3 = 'c'; (3) //error昌妹!不可隱式轉(zhuǎn)換