

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、深度探索深度探索CC對象模型對象模型(7)(7)關(guān)于《深度探索C對象模型》停頓了半個月,今天繼續(xù)啃這個骨頭,我的學(xué)習(xí)進入了第四章,函數(shù)的語意學(xué)。先做個復(fù)習(xí)C支持三種成員函數(shù):靜態(tài)、虛、和非靜態(tài)。每一種函數(shù)的調(diào)用方式都不同,當然他們的作用也會有區(qū)別,一般來說我們只要掌握根據(jù)我們的需要正確的使用這三種類型的成員函數(shù)便可以了,至于內(nèi)部是如何運做的我們可以不知。但是《深度探索C對象模型》正是讓我們對這些不知道的東西進行深度探索的一本書。通過前面
2、的學(xué)習(xí),我想我知道了一些以前不知道的東西,但是感覺并沒有提高多少,也許是我對此書的學(xué)習(xí)還停留在一個比較膚淺的層次上吧。我想我應(yīng)該會抽時間再看幾遍。有些跑題了,因為雷神想說明一下,這些筆記只是雷神看書是的一些想法的記錄,如果你再看僅供參考,因為我本人好象也只探索了不是很深的程度。我們的在設(shè)計和使用類時最常用的便是非靜態(tài)成員函數(shù),使用成員函數(shù)是為了封裝和隱藏我們的數(shù)據(jù),我想這是成員函數(shù)和外部函數(shù)的最明顯的區(qū)別。但是他們的效率是否有不同呢?我
3、們不會想為了保護我們的數(shù)據(jù)而使用成員函數(shù),最后確導(dǎo)致效率降低的結(jié)果。讓我們看看非靜態(tài)成員函數(shù)在實際的執(zhí)行時被編譯器搞成了什么樣子。floatmagnitude3d(constPoint3d_this)…這是一個外部函數(shù),它有參數(shù)。表示它間接的取得坐標(Point3d)成員。floatPoint3d::mangnitude3d()const…這是一個成員函數(shù),它直接取得坐標(Point3d)的成員。表面上看,似乎成員函數(shù)的效率高很多,但實
4、際上他們的效率真的想我們想象的那樣嗎?非也。實際上一個成員函數(shù)被內(nèi)部轉(zhuǎn)化成了外部函數(shù)。1、一個this指針被加入到成員函數(shù)的參數(shù)中,為的是能夠使類的對象調(diào)用這個函數(shù)。2、將對所有非靜態(tài)數(shù)據(jù)成員的存取操作改為由this來存取。但實際上,只有一個或多個靜態(tài)數(shù)據(jù)成員被成員函數(shù)存取時才需要類的對象。類的對象提供一個指針this,用來將用到的非靜態(tài)數(shù)據(jù)成員綁定到類對象對應(yīng)的成員上。如果沒有用到任何一個成員數(shù)據(jù),就不需要用到this指針,也就沒有必
5、要通過類的對象來調(diào)用一個成員函數(shù)。而且我們還知道靜態(tài)數(shù)據(jù)成員是在類之外的,可以被視做全局變量的,只不過它只在一個類的生命范圍內(nèi)可見。(參考前面的筆記)。而且一般來說我們會將靜態(tài)的數(shù)據(jù)成員聲明為一個非Public。這樣我們便必須提供一個或多個成員函數(shù)用來存取這個成員。雖然我們可以不依靠類的對象存取靜態(tài)數(shù)據(jù)成員,但是這個可以用來存取靜態(tài)成員的函數(shù)確實必須綁定在類的對象上的。為了更加好的解決這個問題,cfront2.0引入了靜態(tài)成員函數(shù)的概念
6、。靜態(tài)成員函數(shù)是沒有this指針的。因為它不需要通過類的對象來調(diào)用。而且它不能直接存取類中的非靜態(tài)成員。并且不能夠被聲明為virtualconstvolatile.如果取得一個靜態(tài)成員函數(shù)的地址,那么我們獲得的是這個函數(shù)在內(nèi)存中的位置。(非靜態(tài)成員函數(shù)的地址我們獲得的是一個指向這個類成員函數(shù)的指針,函數(shù)指針)??梢钥吹接捎陟o態(tài)成員函數(shù)沒有this指針,和非成員函數(shù)非常的相似。有了前面幾章的基礎(chǔ),好象這些描述理解起來也不很費勁,而且我們的
7、思路可以跟著書上所說的一路傾瀉下來,這便是讀書的樂趣所在了,如果一本書讀起來都想讀第一章時那樣費勁,我想我讀不下去的可能性會很高。繼續(xù)我們的學(xué)習(xí),下面書上開始將虛函數(shù)了。我們知道虛函數(shù)是C的一個很重要的特性,面向?qū)ο蟮亩鄳B(tài)便是由虛函數(shù)實現(xiàn)的。多態(tài)的概念是一個用一個publicbaseclass的指針(或者引用),尋址出一個派生類對象。虛函數(shù)實現(xiàn)的模型是這樣。每一個類都有一個虛函數(shù)表,它包含類中有作用的虛函數(shù)的地址,當類產(chǎn)生對象時會有一個
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c++面向?qū)ο?oop)
- c++課程設(shè)計-- c++面向?qū)ο蟪绦蛟O(shè)計
- 面向?qū)ο骳++習(xí)題參考解答
- c++面向?qū)ο髮嵗}集錦
- c++面向?qū)ο蟪绦蛟O(shè)計
- 面向?qū)ο蟪绦蛟O(shè)計與c++
- 面向?qū)ο蟪绦蛟O(shè)計題庫(c++)
- c++面向?qū)ο笳n程設(shè)計報告
- c++面向?qū)ο笞钥荚囶}
- c++數(shù)組數(shù)據(jù)處理對象實驗
- 四川大學(xué)c++面向?qū)ο蟪绦蛟O(shè)計模擬試題7
- c++面向?qū)ο蠛喴讏D形編輯器
- 面向?qū)ο蟪绦蚣夹g(shù)(c++)教學(xué)大綱
- c++類對象的復(fù)制-拷貝構(gòu)造函數(shù)
- c++面向?qū)ο蟪绦蛟O(shè)計第5版
- c++面向?qū)ο蟪绦蛟O(shè)計模擬試題打印
- 面向?qū)ο蟪绦蛟O(shè)計c++課后題答案
- c++面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計報告
- 面向?qū)ο蟪绦蛟O(shè)計c++實踐教學(xué)考試大綱
評論
0/150
提交評論