版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、深度探索深度探索CC對(duì)象模型對(duì)象模型(7)(7)關(guān)于《深度探索C對(duì)象模型》停頓了半個(gè)月,今天繼續(xù)啃這個(gè)骨頭,我的學(xué)習(xí)進(jìn)入了第四章,函數(shù)的語(yǔ)意學(xué)。先做個(gè)復(fù)習(xí)C支持三種成員函數(shù):靜態(tài)、虛、和非靜態(tài)。每一種函數(shù)的調(diào)用方式都不同,當(dāng)然他們的作用也會(huì)有區(qū)別,一般來(lái)說(shuō)我們只要掌握根據(jù)我們的需要正確的使用這三種類型的成員函數(shù)便可以了,至于內(nèi)部是如何運(yùn)做的我們可以不知。但是《深度探索C對(duì)象模型》正是讓我們對(duì)這些不知道的東西進(jìn)行深度探索的一本書(shū)。通過(guò)前面
2、的學(xué)習(xí),我想我知道了一些以前不知道的東西,但是感覺(jué)并沒(méi)有提高多少,也許是我對(duì)此書(shū)的學(xué)習(xí)還停留在一個(gè)比較膚淺的層次上吧。我想我應(yīng)該會(huì)抽時(shí)間再看幾遍。有些跑題了,因?yàn)槔咨裣胝f(shuō)明一下,這些筆記只是雷神看書(shū)是的一些想法的記錄,如果你再看僅供參考,因?yàn)槲冶救撕孟笠仓惶剿髁瞬皇呛苌畹某潭?。我們的在設(shè)計(jì)和使用類時(shí)最常用的便是非靜態(tài)成員函數(shù),使用成員函數(shù)是為了封裝和隱藏我們的數(shù)據(jù),我想這是成員函數(shù)和外部函數(shù)的最明顯的區(qū)別。但是他們的效率是否有不同呢?我
3、們不會(huì)想為了保護(hù)我們的數(shù)據(jù)而使用成員函數(shù),最后確導(dǎo)致效率降低的結(jié)果。讓我們看看非靜態(tài)成員函數(shù)在實(shí)際的執(zhí)行時(shí)被編譯器搞成了什么樣子。floatmagnitude3d(constPoint3d_this)…這是一個(gè)外部函數(shù),它有參數(shù)。表示它間接的取得坐標(biāo)(Point3d)成員。floatPoint3d::mangnitude3d()const…這是一個(gè)成員函數(shù),它直接取得坐標(biāo)(Point3d)的成員。表面上看,似乎成員函數(shù)的效率高很多,但實(shí)
4、際上他們的效率真的想我們想象的那樣嗎?非也。實(shí)際上一個(gè)成員函數(shù)被內(nèi)部轉(zhuǎn)化成了外部函數(shù)。1、一個(gè)this指針被加入到成員函數(shù)的參數(shù)中,為的是能夠使類的對(duì)象調(diào)用這個(gè)函數(shù)。2、將對(duì)所有非靜態(tài)數(shù)據(jù)成員的存取操作改為由this來(lái)存取。但實(shí)際上,只有一個(gè)或多個(gè)靜態(tài)數(shù)據(jù)成員被成員函數(shù)存取時(shí)才需要類的對(duì)象。類的對(duì)象提供一個(gè)指針this,用來(lái)將用到的非靜態(tài)數(shù)據(jù)成員綁定到類對(duì)象對(duì)應(yīng)的成員上。如果沒(méi)有用到任何一個(gè)成員數(shù)據(jù),就不需要用到this指針,也就沒(méi)有必
5、要通過(guò)類的對(duì)象來(lái)調(diào)用一個(gè)成員函數(shù)。而且我們還知道靜態(tài)數(shù)據(jù)成員是在類之外的,可以被視做全局變量的,只不過(guò)它只在一個(gè)類的生命范圍內(nèi)可見(jiàn)。(參考前面的筆記)。而且一般來(lái)說(shuō)我們會(huì)將靜態(tài)的數(shù)據(jù)成員聲明為一個(gè)非Public。這樣我們便必須提供一個(gè)或多個(gè)成員函數(shù)用來(lái)存取這個(gè)成員。雖然我們可以不依靠類的對(duì)象存取靜態(tài)數(shù)據(jù)成員,但是這個(gè)可以用來(lái)存取靜態(tài)成員的函數(shù)確實(shí)必須綁定在類的對(duì)象上的。為了更加好的解決這個(gè)問(wèn)題,cfront2.0引入了靜態(tài)成員函數(shù)的概念
6、。靜態(tài)成員函數(shù)是沒(méi)有this指針的。因?yàn)樗恍枰ㄟ^(guò)類的對(duì)象來(lái)調(diào)用。而且它不能直接存取類中的非靜態(tài)成員。并且不能夠被聲明為virtualconstvolatile.如果取得一個(gè)靜態(tài)成員函數(shù)的地址,那么我們獲得的是這個(gè)函數(shù)在內(nèi)存中的位置。(非靜態(tài)成員函數(shù)的地址我們獲得的是一個(gè)指向這個(gè)類成員函數(shù)的指針,函數(shù)指針)??梢钥吹接捎陟o態(tài)成員函數(shù)沒(méi)有this指針,和非成員函數(shù)非常的相似。有了前面幾章的基礎(chǔ),好象這些描述理解起來(lái)也不很費(fèi)勁,而且我們的
7、思路可以跟著書(shū)上所說(shuō)的一路傾瀉下來(lái),這便是讀書(shū)的樂(lè)趣所在了,如果一本書(shū)讀起來(lái)都想讀第一章時(shí)那樣費(fèi)勁,我想我讀不下去的可能性會(huì)很高。繼續(xù)我們的學(xué)習(xí),下面書(shū)上開(kāi)始將虛函數(shù)了。我們知道虛函數(shù)是C的一個(gè)很重要的特性,面向?qū)ο蟮亩鄳B(tài)便是由虛函數(shù)實(shí)現(xiàn)的。多態(tài)的概念是一個(gè)用一個(gè)publicbaseclass的指針(或者引用),尋址出一個(gè)派生類對(duì)象。虛函數(shù)實(shí)現(xiàn)的模型是這樣。每一個(gè)類都有一個(gè)虛函數(shù)表,它包含類中有作用的虛函數(shù)的地址,當(dāng)類產(chǎn)生對(duì)象時(shí)會(huì)有一個(gè)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c++面向?qū)ο?oop)
- c++課程設(shè)計(jì)-- c++面向?qū)ο蟪绦蛟O(shè)計(jì)
- 面向?qū)ο骳++習(xí)題參考解答
- c++面向?qū)ο髮?shí)例題集錦
- c++面向?qū)ο蟪绦蛟O(shè)計(jì)
- 面向?qū)ο蟪绦蛟O(shè)計(jì)與c++
- 面向?qū)ο蟪绦蛟O(shè)計(jì)題庫(kù)(c++)
- c++面向?qū)ο笳n程設(shè)計(jì)報(bào)告
- c++面向?qū)ο笞钥荚囶}
- c++數(shù)組數(shù)據(jù)處理對(duì)象實(shí)驗(yàn)
- 四川大學(xué)c++面向?qū)ο蟪绦蛟O(shè)計(jì)模擬試題7
- c++面向?qū)ο蠛?jiǎn)易圖形編輯器
- 面向?qū)ο蟪绦蚣夹g(shù)(c++)教學(xué)大綱
- c++類對(duì)象的復(fù)制-拷貝構(gòu)造函數(shù)
- c++面向?qū)ο蟪绦蛟O(shè)計(jì)第5版
- c++面向?qū)ο蟪绦蛟O(shè)計(jì)模擬試題打印
- 面向?qū)ο蟪绦蛟O(shè)計(jì)c++課后題答案
- c++面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 面向?qū)ο蟪绦蛟O(shè)計(jì)c++實(shí)踐教學(xué)考試大綱
評(píng)論
0/150
提交評(píng)論