日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ 中explicit的使用

發(fā)布時(shí)間:2023/12/10 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 中explicit的使用 小編覺得挺不錯的,現(xià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++中, 一個參數(shù)的構(gòu)造函數(shù)(或者除了第一個參數(shù)外其余參數(shù)都有默認(rèn)值的多參構(gòu)造函數(shù)), 承擔(dān)了兩個角色。 1 是個構(gòu)造器?,2 是個默認(rèn)且隱含的類型轉(zhuǎn)換操作符。 所以, 有時(shí)候在我們寫下如 AAA = XXX, 這樣的代碼, 且恰好XXX的類型正好是AAA單參數(shù)構(gòu)造器的參數(shù)類型, 這時(shí)候編譯器就自動調(diào)用這個構(gòu)造器, 創(chuàng)建一個AAA的對象。 這樣看起來好象很酷, 很方便。 但在某些情況下(見下面權(quán)威的例子), 卻違背了我們(程序員)的本意。 這時(shí)候就要在這個構(gòu)造器前面加上explicit修飾, 指定這個構(gòu)造器只能被明確的調(diào)用,使用, 不能作為類型轉(zhuǎn)換操作符被隱含的使用。 呵呵, 看來還是光明正大些比較好。 explicit構(gòu)造函數(shù)的作用 解析: explicit構(gòu)造函數(shù)是用來防止隱式轉(zhuǎn)換的。請看下面的代碼: class Test1 { public:Test1(int n){num=n;}//普通構(gòu)造函數(shù) private:int num; }; class Test2 { public:explicit Test2(int n){num=n;}//explicit(顯式)構(gòu)造函數(shù) private:int num; }; int main() {Test1 t1=12;//隱式調(diào)用其構(gòu)造函數(shù),成功Test2 t2=12;//編譯錯誤,不能隱式調(diào)用其構(gòu)造函數(shù)Test2 t2(12);//顯式調(diào)用成功return 0; } Test1的構(gòu)造函數(shù)帶一個int型的參數(shù),代碼23行會隱式轉(zhuǎn)換成調(diào)用Test1的這個構(gòu)造函數(shù)。而Test2的構(gòu)造函數(shù)被聲明為explicit(顯式),這表示不能通過隱式轉(zhuǎn)換來調(diào)用這個構(gòu)造函數(shù),因此代碼24行會出現(xiàn)編譯錯誤。 普通構(gòu)造函數(shù)能夠被隱式調(diào)用。而explicit構(gòu)造函數(shù)只能被顯式調(diào)用。

總結(jié)

以上是生活随笔為你收集整理的C++ 中explicit的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。