亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Explicit keyword

系統 2040 0

說實話,從來沒有感覺到這個keyword實用,直到今天。

explicit 的意思是明顯的 , 和它相相應的一個詞是 implicit 意思是隱藏的。

我參考了 MSDN c++ 標準程序庫》對這個keyword的描寫敘述,并參考了網絡上對這個keyword的解釋?,F將它的用法和總結記錄例如以下:

首先這個keyword僅僅能用在 類構造函數 。它的作用是不能進行隱式轉換。

class gxgExplicit ? // 沒有keyword explicit 的類

{

public :

?? int _size;

?? gxgExplicit( int size)

?? {

????? _size = size;

?? }

};

以下是調用

?? gxgExplicit gE1(24); ???? // 這樣是沒有問題的

?? gxgExplicit gE2 = 1; ???? // 這樣也是沒有問題的

?? gxgExplicit gE3; ???????? // 這樣是不行的,沒有默認構造函數

?? gE1 = 2; ????????????? ?? // 這樣也是沒有問題的

?? gE2 = 3; ????????????? ?? // 這樣也是沒有問題的

?? gE2 = gE1; ?????????????? // 這樣也是沒有問題的

?

可是假如 gxgExplicit 改動為 Stack ,我們的 _size 代表的是堆棧的大小,那么調用的第二句就顯得不倫不類,并且easy讓人疑惑。這并非能夠讓代碼閱讀者明確和接受的形式,盡管它是合法的(編譯器能夠通過編譯)。這是由于編譯器默認情況下有隱式轉換的功能,你輸入 gE2 = 1 就編譯成同第一句同樣的結果。所以, explicit 就派上了用場。改動代碼為:

class gxgExplicit

{

public :

?? int _size;

?? explicit gxgExplicit( int size)

?? {

????? _size = size;

?? }

};

繼續上面的調用 :

?? gxgExplicit gE1(24); ???? // 這樣是沒有問題的

?? gxgExplicit gE2 = 1; ???? // 這樣是不行的,keyword取消了隱式轉換

?? gxgExplicit gE3; ???????? // 這樣是不行的,沒有默認構造函數

?? gE1 = 2; ????????????? ?? // 這樣是不行的,keyword取消了隱式轉換

?? gE2 = 3; ????????????? ?? // 這樣是不行的,keyword取消了隱式轉換

?? gE2 = gE1; ?????????????? // 這樣是不行的,keyword取消了隱式轉換,除非類實現操作符“ = ”的重載。

這是編譯器( vs2005 )顯示: cannot convert from 'int' to 'gxgExplicit'

從這里也就看出這個keyword的作用是將編譯器隱式轉換的功能給屏蔽掉。

?

MSDN 上有一個注意點描寫敘述了以下的事實,當構造函數參數超過兩個時自己主動取消隱式轉換。比如

class gxgExplicit

{

private :

?? int _size;

?? int _age;

public :

?? explicit gxgExplicit( int age, int size)

?? {

????? _age = age;

????? _size = size;

?? }

};

這是有沒有keyword效果是一樣的。那就是相當于有這個keyword。

可是第二種情況例外:當中僅僅有一個必須輸入的參數,其余的為有默認值的參數。

class gxgExplicit

{

private :

?? int _size;

?? int _age;

public :

?? explicit gxgExplicit( int age, int size = 0)

?? {

????? _age = age;

????? _size = size;

?? }

};

class gxgExplicit

{

private :

?? int _size;

?? int _age;

int _hight;

public :

?? explicit gxgExplicit( int age, int size = 0)

?? {

????? _age = age;

????? _size = size;

????? _hight = hight;

?? }

};

?

這種情況下相當于一個參數的效果。

到如今為止。這個keyword就是這么用了。

?

?

?

Explicit keyword


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美黄色毛片 | 国产com | 热久久视久久精品18国产 | 91在线精品老司机免费播放 | 国产精品久久久久久久久久久不卡 | 日日爽天天干 | 免费一级欧美片在线观看 | 欧美精| 嘿咻嘿咻免费区在线观看吃奶 | 嫩操影院 | 欧美日韩一区二区视频免费看 | 国产高清狼人香蕉在线观看 | 亚洲偷图色综合色就色 | 二区不卡| 67194老司机精品午夜 | 一级a性色生活片毛片 | 久久综合综合 | 四虎影视国产精品婷婷 | 天天曰夜夜曰 | 精品久久久久久国产91 | 精品九九在线 | 国产精品福利久久香蕉中文 | 亚洲人成影院午夜网站 | 日日摸夜夜添夜夜添久久 | 国产舐足视频在线观看 | 亚洲欧美自拍另类图片色 | 国产一二三区在线观看 | 牛牛影视在线观看片免费 | 欧美91 | 青青青免费视频精品99 | 欧美日日射 | 苦瓜se影院在线视频网站 | 日本美女久久 | 国产真实乱子伦精品视 | 香蕉久久夜色精品国产2020 | 久久99精品九九九久久婷婷 | 91久久99热青草国产 | 日本叼嘿| 99久久精品国产一区二区三区 | 亚洲成在人 | 特级黄色视频毛片 |