C++中explict關(guān)鍵字用法
C++提供了關(guān)鍵字explicit,可以阻止不應(yīng)該允許的經(jīng)過轉(zhuǎn)換構(gòu)造函數(shù)進(jìn)行的隱式轉(zhuǎn)換的發(fā)生。聲明為explicit的構(gòu)造函數(shù)不能在隱式轉(zhuǎn)換中使用。
c++規(guī)定:對(duì)于可能只需傳一個(gè)參數(shù)的默認(rèn)構(gòu)造函數(shù),都定義了一種隱式調(diào)用。
注意:只需傳一個(gè)參數(shù)不僅指的是只有一個(gè)參數(shù)的默認(rèn)構(gòu)造函數(shù),也指那些包含了定義了參數(shù)默認(rèn)值的那些默認(rèn)構(gòu)造函數(shù)。
舉例說明:
class MyClass { public: MyClass(); MyClass(string s); MyClass(int i, int y = 0); }
這里的MyClass(string s)函數(shù)和MyClass(int i, int y = 0)函數(shù)都是可能只需傳一個(gè)參數(shù)的默認(rèn)構(gòu)造函數(shù)
看一下使用構(gòu)造函數(shù)構(gòu)造類對(duì)象的情況:
•MyClass obj1;//OK,調(diào)用了MyClass()
•MyClass obj2(string("Hello World!"));//OK,調(diào)用了MyClass(string s)
•MyClass obj3(12, 12);//OK,調(diào)用了MyClass(int i, int y = 0)
•MyClass obj4(12);//同上
•MyClass obj5 = 12;//同上。但是對(duì)于obj5,實(shí)際上等價(jià)于MyClass temp(12);MyClass obj5(temp);//也就是說默認(rèn)調(diào)用了默認(rèn)拷貝構(gòu)造函數(shù)。這就是所謂的隱式調(diào)用。
大部分情況下,隱式調(diào)用都會(huì)產(chǎn)生bug,而且很難察覺?;诖?,C++引入explict關(guān)鍵字關(guān)閉這種隱式調(diào)用,避免因?yàn)殡[式調(diào)用而產(chǎn)生的bug。
上一篇:C語言靜態(tài)鏈表和動(dòng)態(tài)鏈表
欄 目:C語言
下一篇:C語言壓縮文件和用MD5算法校驗(yàn)文件完整性的實(shí)例教程
本文標(biāo)題:C++中explict關(guān)鍵字用法
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2340.html
您可能感興趣的文章
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對(duì)數(shù)函數(shù)的表達(dá)式 c語言中對(duì)數(shù)怎么表達(dá)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 01-10深入理解C++中常見的關(guān)鍵字含義
- 01-10使用C++實(shí)現(xiàn)全排列算法的方法詳解
- 01-10深入Main函數(shù)中的參數(shù)argc,argv的使用詳解
- 01-10APUE筆記之:進(jìn)程環(huán)境詳解
- 01-10c++中inline的用法分析
- 01-10如何尋找數(shù)組中的第二大數(shù)


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對(duì)數(shù)函數(shù)的表達(dá)式 c語言中對(duì)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 04-02jquery與jsp,用jquery