国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C++ > 正文

C++中explict關(guān)鍵字用法

2020-01-26 14:37:30
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

C++提供了關(guān)鍵字explicit,可以阻止不應(yīng)該允許的經(jīng)過(guò)轉(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ù)。

舉例說(shuō)明:

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);//也就是說(shuō)默認(rèn)調(diào)用了默認(rèn)拷貝構(gòu)造函數(shù)。這就是所謂的隱式調(diào)用。

大部分情況下,隱式調(diào)用都會(huì)產(chǎn)生bug,而且很難察覺(jué)。基于此,C++引入explict關(guān)鍵字關(guān)閉這種隱式調(diào)用,避免因?yàn)殡[式調(diào)用而產(chǎn)生的bug。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南靖县| 维西| 桐梓县| 肥东县| 潢川县| 桂阳县| 襄汾县| 涟源市| 湟源县| 城市| 高安市| 中江县| 河源市| 梓潼县| 含山县| 民和| 抚州市| 金川县| 蒙阴县| 衡水市| 黔江区| 灵石县| 永新县| 安国市| 涟水县| 遂宁市| 江安县| 囊谦县| 永昌县| 家居| 合阳县| 隆子县| 略阳县| 綦江县| 宁城县| 屯昌县| 深泽县| 珲春市| 武汉市| 太康县| 威海市|