談vc++對(duì)象模型_第1頁(yè)
已閱讀1頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、VC,掀起你的蓋頭來(lái)——談VC對(duì)象模型(美)簡(jiǎn)?格雷程化譯譯者前言一個(gè)C程序員,想要進(jìn)一步提升技術(shù)水平的話,應(yīng)該多了解一些語(yǔ)言的語(yǔ)意細(xì)節(jié)。對(duì)于使用VC的程序員來(lái)說(shuō),還應(yīng)該了解一些VC對(duì)于C的詮釋。InsidetheCObjectModel雖然是一本好書(shū),然而,書(shū)的篇幅多一些,又和具體的VC關(guān)系小一些。因此,從篇幅和內(nèi)容來(lái)看,譯者認(rèn)為本文是深入理解C對(duì)象模型比較好的一個(gè)出發(fā)點(diǎn)。這篇文章以前看到時(shí)就覺(jué)得很好,舊文重讀,感覺(jué)理解得更多一些了,

2、于是產(chǎn)生了翻譯出來(lái),與大家共享的想法。雖然文章不長(zhǎng),但時(shí)間有限,又若干次在翻譯時(shí)打盹睡著,拖拖拉拉用了小一個(gè)月。一方面因本人水平所限,另一方面因翻譯時(shí)經(jīng)常打盹,錯(cuò)誤之處恐怕不少,歡迎大家批評(píng)指正。1前言了解你所使用的編程語(yǔ)言究竟是如何實(shí)現(xiàn)的,對(duì)于C程序員可能特別有意義。首先,它可以去除我們對(duì)于所使用語(yǔ)言的神秘感,使我們不至于對(duì)于編譯器干的活感到完全不可思議;尤其重要的是,它使我們?cè)贒ebug和使用語(yǔ)言高級(jí)特性的時(shí)候,有更多的把握。當(dāng)需要

3、提高代碼效率的時(shí)候,這些知識(shí)也能夠很好地幫助我們。本文著重回答這樣一些問(wèn)題:?類(lèi)如何布局??成員變量如何訪問(wèn)??成員函數(shù)如何訪問(wèn)??所謂的“調(diào)整塊”(adjusterthunk)是怎么回事??使用如下機(jī)制時(shí),開(kāi)銷(xiāo)如何:?單繼承、多重繼承、虛繼承?虛函數(shù)調(diào)用?強(qiáng)制轉(zhuǎn)換到基類(lèi),或者強(qiáng)制轉(zhuǎn)換到虛基類(lèi)?異常處理首先,我們順次考察C兼容的結(jié)構(gòu)(struct)的布局,單繼承,多重繼承,以及虛繼承;接著,我們講成員變量和成員函數(shù)的訪問(wèn),當(dāng)然,這里面包

4、含虛函數(shù)的情況;再接下來(lái),我們考察構(gòu)造函數(shù),析構(gòu)函數(shù),以及特殊的賦值操作符成員函數(shù)是如何工作的,數(shù)組是如何動(dòng)態(tài)構(gòu)造和銷(xiāo)毀的;最后,簡(jiǎn)單地介紹對(duì)異常處理的支持。對(duì)每個(gè)語(yǔ)言特性,我們將簡(jiǎn)要介紹該特性背后的動(dòng)機(jī),該特性自身的語(yǔ)意(當(dāng)然,本public:intbm1protected:intbm2private:intbm3staticintbsmvoidbf()staticvoidbsf()typedefvoidbpvstructN譯者注:B

5、中,為何staticintbsm不占用內(nèi)存空間?因?yàn)樗庆o態(tài)成員,該數(shù)據(jù)存放在程序的數(shù)據(jù)段中,不在類(lèi)實(shí)例中。2.3單繼承C提供繼承的目的是在不同的類(lèi)型之間提取共性。比如,科學(xué)家對(duì)物種進(jìn)行分類(lèi),從而有種、屬、綱等說(shuō)法。有了這種層次結(jié)構(gòu),我們才可能將某些具備特定性質(zhì)的東西歸入到最合適的分類(lèi)層次上,如“懷孩子的是哺乳動(dòng)物”。由于這些屬性可以被子類(lèi)繼承,所以,我們只要知道“鯨魚(yú)、人”是哺乳動(dòng)物,就可以方便地指出“鯨魚(yú)、人都可以懷孩子”。那些特例

6、,如鴨嘴獸(生蛋的哺乳動(dòng)物),則要求我們對(duì)缺省的屬性或行為進(jìn)行覆蓋。C中的繼承語(yǔ)法很簡(jiǎn)單,在子類(lèi)后加上“:base”就可以了。下面的D繼承自基類(lèi)C。structCintc1voidcf()structD:Cintd1voiddf()既然派生類(lèi)要保留基類(lèi)的所有屬性和行為,自然地,每個(gè)派生類(lèi)的實(shí)例都包含了一份完整的基類(lèi)實(shí)例數(shù)據(jù)。在D中,并不是說(shuō)基類(lèi)C的數(shù)據(jù)一定要放在D的數(shù)據(jù)之前,只不過(guò)這樣放的話,能夠保證D中的C對(duì)象地址,恰好是D對(duì)象地址的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論