版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- vc++對(duì)象模型
- [vc++畢設(shè)]vc++車(chē)輛調(diào)度
- 面向?qū)ο蟪绦蛟O(shè)計(jì)與vc++實(shí)踐
- [vc++畢設(shè)]vc++庫(kù)存管理
- [vc++畢設(shè)]vc++象棋程序+論文
- [vc++畢設(shè)]vc++醫(yī)藥管理系統(tǒng)+論文
- [vc++畢設(shè)]vc++航空檢票系統(tǒng)+論文
- [vc++畢設(shè)]vc++開(kāi)發(fā)gis項(xiàng)目程序+論文
- vc++串口編程
- vc++內(nèi)嵌匯編
- [vc++畢設(shè)]vc++圖書(shū)館管理系統(tǒng)
- 外文翻譯 vc++簡(jiǎn)介
- vc++面向?qū)ο笳n程設(shè)計(jì)報(bào)告---局域網(wǎng)聊天程序
- [vc++畢設(shè)]vc++網(wǎng)上尋呼qicq源代碼(附帶論文)
- [vc++畢設(shè)]vc++學(xué)生成績(jī)統(tǒng)計(jì)分析系統(tǒng)
- [vc++畢設(shè)]vc++可視化圖像處理系統(tǒng)+論文
- [vc++畢設(shè)]vc++運(yùn)動(dòng)會(huì)成績(jī)管理系統(tǒng)(源碼+論文)
- [vc++畢設(shè)]vc++ 003指紋識(shí)別系統(tǒng)
- vc++程序設(shè)計(jì)
- vc++基礎(chǔ)教程
評(píng)論
0/150
提交評(píng)論