青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

weibing

用最簡(jiǎn)單的方式理解const成員函數(shù)及mutable關(guān)鍵字

struct SomeType
{
    
int m_a;
    
void SomeMethod()const
    
{
        m_a 
= 0;
    }

}
;

上面的代碼實(shí)際上將無(wú)法通過(guò)編譯,我們把"SomeMethod"換一個(gè)寫(xiě)法來(lái)理解一下

void SomeMethod()const

{

    this->m_a = 0;

}

這里的“this”就是我們通常說(shuō)的成員函數(shù)的隱含this指針參數(shù)了,該參數(shù)雖然沒(méi)在函數(shù)參數(shù)列表里(所以稱之為隱含),但是這個(gè)參數(shù)是實(shí)際存在的,并且該參數(shù)類(lèi)型對(duì)于非const成員函數(shù)來(lái)說(shuō)是SomeType* const,對(duì)于const 成員函數(shù),其類(lèi)型是const SomeType* const, 也就是又增加了一個(gè)const(我想是由于this指針是隱含參數(shù),所以const沒(méi)地方放了,只好放在成員函數(shù)的結(jié)尾了)。這也就解釋了,為什么上面的代碼無(wú)法通過(guò)編譯,同時(shí)也說(shuō)明了,成員函數(shù)是通過(guò)這個(gè)隱含的this指針來(lái)訪問(wèn)其成員的,這個(gè)隱含的this指針,在代碼定義的時(shí)候仍然可以省去不寫(xiě),當(dāng)然,在編譯的時(shí)候,編譯器會(huì)自動(dòng)添加這個(gè)this的。

 

這里還存在一個(gè)很別扭的問(wèn)題: 在SomeMethod的第一個(gè)版本定義里,定義的是const成員函數(shù),但是第二個(gè)版本由于升級(jí),我們需要改動(dòng)某個(gè)成員變量的值,很顯然,這個(gè)時(shí)候我們需要把SomeMethod成員函數(shù)后面的const去掉才能通過(guò)編譯,但這樣做又會(huì)帶來(lái)一個(gè)問(wèn)題,如果SomeMethod是作為共享代碼庫(kù)的形式存在,我們有理由保證SomeMethod的版本兼容性,這樣才能完全保證該庫(kù)的第一個(gè)版本使用者,在升級(jí)到該庫(kù)的第二個(gè)版本時(shí),可以不改變調(diào)用代碼,進(jìn)行成功編譯。為了解決這個(gè)問(wèn)題,C++引入mutable關(guān)鍵字,也就是把m_a定義為mutable int m_a就可以了。該關(guān)鍵字將屏蔽掉編譯過(guò)程中對(duì)const的特殊優(yōu)化處理,不僅僅解決這個(gè)編譯問(wèn)題,也保證了運(yùn)行期的邏輯正確性。

 

這個(gè)時(shí)候,大家可能會(huì)提出一個(gè)實(shí)用的做法,就是避免定義const成員函數(shù),一切問(wèn)題不就解決了嗎(函數(shù)參數(shù)的const定義規(guī)范,以后我會(huì)專門(mén)討論)?其實(shí)用const有如下幾個(gè)明顯好處:

 

1.     const從語(yǔ)言層面保證該方法不會(huì)改動(dòng)其成員,幫助該方法的使用者理解其含義并做出正確調(diào)用,也幫助該方法的設(shè)計(jì)者不違背其實(shí)現(xiàn)意圖,從編譯層面盡可能防止寫(xiě)出錯(cuò)誤的實(shí)現(xiàn)代碼

2.     const可以擴(kuò)大該方法的使用范圍,const SomeType c; c.SomeMethod(); 如果不是const成員函數(shù),這個(gè)代碼將無(wú)法實(shí)現(xiàn)編譯,也就是說(shuō)該方法的調(diào)用將受到本不該受到的限制

3.     從語(yǔ)義以外的執(zhí)行層面,const變量在一定程度上會(huì)參與編譯的優(yōu)化,從而提高運(yùn)行效率,也就是const對(duì)象的存在是必要的


posted on 2011-07-10 23:31 魏兵 閱讀(1484) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


My Links

Blog Stats

常用鏈接

留言簿

隨筆檔案

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品自拍网站| 亚洲伊人色欲综合网| 亚洲精品中文字幕在线观看| 在线免费观看视频一区| 18成人免费观看视频| 亚洲黄色一区二区三区| 亚洲精品久久视频| 亚洲一区尤物| 久久成人18免费网站| 久久夜色精品| 欧美激情视频一区二区三区在线播放 | 欧美日本韩国在线| 国产精品久久久对白| 国产亚洲精品成人av久久ww| ●精品国产综合乱码久久久久| 亚洲精品视频在线观看免费| 亚洲自拍16p| 免费不卡亚洲欧美| 99精品久久久| 久久日韩精品| 国产精品性做久久久久久| 亚洲电影在线看| 午夜久久tv| 亚洲国产黄色| 亚洲色图制服丝袜| 久久中文字幕导航| 国产精品美女一区二区| 亚洲国产精品专区久久| 欧美一级专区| 日韩香蕉视频| 另类专区欧美制服同性| 国产精品亚洲精品| 亚洲毛片在线观看| 麻豆精品一区二区av白丝在线| 一本一道久久综合狠狠老精东影业| 久久精品国产77777蜜臀| 欧美午夜电影在线| 亚洲人成免费| 蜜臀av在线播放一区二区三区| 亚洲午夜激情| 欧美成人福利视频| 狠狠色狠狠色综合日日五| 欧美成人激情在线| 国产日韩精品入口| 中国成人在线视频| 日韩午夜在线| 亚洲精品欧美日韩专区| 国产精品一级久久久| 国产精品美女黄网| 韩日视频一区| 久久青青草原一区二区| 欧美一区二区黄| 国产欧美欧洲在线观看| 亚洲欧美日韩综合| 亚洲一区观看| 国产精品一区在线观看你懂的| 亚洲综合精品| 亚洲天堂av在线免费| 国产精品理论片| 香蕉亚洲视频| 欧美在线日韩精品| 一区二区三区在线观看国产| 久久亚洲私人国产精品va| 欧美自拍偷拍| 亚洲丁香婷深爱综合| 欧美激情第8页| 欧美激情国产日韩精品一区18| 99re这里只有精品6| 日韩视频专区| 国产精品爽黄69| 久久九九国产| 久久久亚洲人| 亚洲精品中文字幕女同| 在线视频你懂得一区| 国产精品亚洲精品| 免费视频亚洲| 欧美国产精品专区| 亚洲一区二区精品| 先锋影音久久久| 亚洲国产精品久久久| 99v久久综合狠狠综合久久| 国产欧美精品一区二区三区介绍| 久久午夜视频| 欧美日韩在线不卡一区| 久久成人综合网| 久久综合免费视频影院| 一区二区三区免费网站| 午夜精彩国产免费不卡不顿大片| 激情综合激情| 亚洲美女av网站| 国产午夜精品久久| 亚洲国产综合91精品麻豆| 国产精品羞羞答答xxdd| 欧美激情成人在线| 国产欧美视频一区二区| 亚洲国产成人一区| 国产婷婷精品| 一区二区三区av| 亚洲国产成人精品女人久久久| 亚洲午夜精品一区二区| 亚洲人体影院| 久久经典综合| 亚洲欧美日本精品| 欧美成人影音| 亚洲二区免费| 亚洲综合好骚| 一区二区三区四区在线| 久久精品国产77777蜜臀| 在线视频精品| 欧美成年人视频网站| 久久九九全国免费精品观看| 欧美另类69精品久久久久9999| 久久综合网色—综合色88| 欧美特黄a级高清免费大片a级| 欧美大片国产精品| 国产一区二区三区电影在线观看| 一本色道久久88综合亚洲精品ⅰ | 国产日韩欧美在线视频观看| 亚洲免费观看| 亚洲精品久久久久中文字幕欢迎你 | 一区二区亚洲欧洲国产日韩| 亚洲午夜精品一区二区| 9色porny自拍视频一区二区| 另类综合日韩欧美亚洲| 久久字幕精品一区| 国产午夜精品视频免费不卡69堂| 在线视频你懂得一区| 亚洲天堂av在线免费| 欧美日韩国产在线播放| 亚洲伦理在线| 国产精品99久久久久久人| 欧美日韩成人一区| 亚洲区在线播放| 亚洲少妇最新在线视频| 欧美视频中文字幕| 亚洲调教视频在线观看| 亚洲欧美日韩成人| 欧美午夜女人视频在线| 夜夜嗨av一区二区三区中文字幕| 宅男噜噜噜66一区二区66| 欧美先锋影音| 午夜精品视频在线| 久久人体大胆视频| 亚洲国产成人精品视频| 欧美激情亚洲另类| 日韩午夜在线电影| 先锋亚洲精品| 精品二区视频| 欧美精品在线观看91| 一二三区精品福利视频| 午夜精品国产| 伊人久久亚洲影院| 欧美激情中文字幕一区二区| 一区二区精品在线| 久久精品成人一区二区三区| 一区二区自拍| 欧美区国产区| 午夜在线精品| 欧美va天堂在线| 一区二区三区高清在线 | 欧美三级在线视频| 午夜国产一区| 欧美大尺度在线观看| 一区二区三区导航| 国产视频久久| 亚洲人成网站在线观看播放| 一区二区三区四区在线| 久久久精品国产免大香伊| 国内久久精品视频| 国产日韩欧美三级| 国产丝袜美腿一区二区三区| 久久成人人人人精品欧| 欧美一级专区| av成人手机在线| 国产真实乱子伦精品视频| 欧美日本亚洲| 欧美一区二区三区成人 | 久久久激情视频| 亚洲精品男同| 乱人伦精品视频在线观看| 一区二区三区免费观看| 在线日韩电影| 国产欧美另类| 欧美日韩在线三区| 美女诱惑一区| 欧美一级久久久久久久大片| 日韩视频免费观看高清在线视频 | 欧美中文字幕久久| 9国产精品视频| 在线观看国产成人av片| 欧美亚州韩日在线看免费版国语版| 久久久久一区二区| 欧美一区二区视频观看视频| 日韩亚洲欧美在线观看| 亚洲韩国一区二区三区| 牛牛国产精品| 久久综合色影院| 久久理论片午夜琪琪电影网| 亚洲免费中文字幕| 99精品国产福利在线观看免费|