

下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
多態(tài)與虛函數(shù)靜態(tài)聯(lián)編動態(tài)聯(lián)編虛函數(shù)的聲明和定義虛函數(shù)的原理靜態(tài)聯(lián)編
靜態(tài)聯(lián)編是指聯(lián)編工作出目前編譯連接階段,這種聯(lián)編又稱早期聯(lián)編,因為這種聯(lián)編過程是在程式開始運行之前完成的。在編譯時所進行的這種聯(lián)編又稱靜態(tài)束定。在編譯時就解決了程式中的操作調(diào)用和執(zhí)行該操作代碼間的關(guān)系,確定這種關(guān)系又稱為束定,在編譯時束定又稱靜態(tài)束定?!痉独?3-1】將通過實例講述靜態(tài)聯(lián)編的概念動態(tài)聯(lián)編
動態(tài)聯(lián)編實際上是進行動態(tài)識別,在實例13.1中,前面分析過了靜態(tài)聯(lián)編時,F(xiàn)unc()函數(shù)中s所引用的對象被束定到Point類上。而在運行時進行動態(tài)聯(lián)編將把s的對象引用束定到RectAngle類上??梢?,同一個對象引用s,在不同階段被束定的類對象將是不同的。那么怎么來確定是靜態(tài)聯(lián)編還是動態(tài)聯(lián)編呢?C++規(guī)定動態(tài)聯(lián)編是在虛函數(shù)的支持下實現(xiàn)的。從上述分析能看出靜態(tài)聯(lián)編和動態(tài)聯(lián)編也都是屬于多態(tài)性的,它們是不同階段對不同實現(xiàn)進行不同的選擇。上例中,實現(xiàn)上是對Func()函數(shù)參數(shù)的多態(tài)性的選擇,該函數(shù)的參數(shù)是類的對象引用,靜態(tài)聯(lián)編和動態(tài)聯(lián)編和動態(tài)聯(lián)編實際上是在選擇它的靜態(tài)類型和動態(tài)類型,聯(lián)編是對這個引用的多態(tài)性的選擇。實現(xiàn)動態(tài)聯(lián)編必須滿足以下3個條件:必須把需要動態(tài)聯(lián)編的行為定義為類的公共屬性的虛函數(shù);類之間存在子類型關(guān)系,一般表現(xiàn)為一個類從另一個類公有派生而來;必須先使用基類指針指向子類型的對象,然后直接或者間接使用基類指針調(diào)用虛函數(shù)。虛函數(shù)的聲明和定義
虛函數(shù)必須是類的非靜態(tài)成員函數(shù)(且非構(gòu)造函數(shù)),其訪問權(quán)限是public,在基類的類定義中定義虛函數(shù)的一般形式如下:class基類名{public: virtual函數(shù)返回值類型虛函數(shù)名(形參表){
函數(shù)體 }}在定義了虛函數(shù)后,可以在基類的派生類中對虛函數(shù)重新定義,其一般形式為如下:class類名:基類名{public: virtual函數(shù)返回值類型虛函數(shù)名(形參表) {
函數(shù)體 }}【范例13-2】將通過改寫實例13.1中的Area函數(shù)為虛函數(shù)講述虛函數(shù)的定義和申明虛函數(shù)的原理
大家都知道C++中的虛函數(shù)的實現(xiàn)一般是通過虛函數(shù)表(VirtualTable)實現(xiàn)的,簡稱為V-Table。類的虛函數(shù)表是一塊連續(xù)的內(nèi)存,每個內(nèi)存單元中記錄一個JMP指令的地址。編譯器會為每個有虛函數(shù)的類創(chuàng)建一個虛函數(shù)表,該虛函數(shù)表將被該類的所有對象共享。類的每個虛成員占據(jù)虛函數(shù)表中的一行。如果類中有N個虛函數(shù),那么其虛函數(shù)表將有N*4字節(jié)的大小。在虛函數(shù)表中,主要是一個類的虛函數(shù)的地址表,它解決了繼承、覆蓋的問題,保證其真實反應(yīng)實際的函數(shù)。這樣,在有虛函數(shù)的類的實例中這個表被分配在了這個實例的內(nèi)存中,所以,當(dāng)用父類的指針來操作一個子類的時候,這張?zhí)摵瘮?shù)表就顯得由為重要了,它就像一個地圖一樣,指明了實際所應(yīng)該調(diào)用的函數(shù)。編譯器應(yīng)該是保證虛函數(shù)表的指針存在于對象實例中最前面的位置(這是為了保證取到虛函數(shù)表的有最高的性能——如果有多層繼承或是多重繼承的情況下)。這意味
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025凱里學(xué)院第十三屆貴州人才博覽會引才28人考前自測高頻考點模擬試題附答案詳解
- 2025年甘肅省蘭州大學(xué)哲學(xué)社會學(xué)院聘用制(B崗)人員招聘考前自測高頻考點模擬試題及答案詳解(考點梳理)
- 2025遼寧鞍山市千山區(qū)公益性崗位招聘2人考前自測高頻考點模擬試題及一套參考答案詳解
- DB14∕T 2240-2020 應(yīng)急管理信息化 煤礦礦長安全生產(chǎn)考核記 分系統(tǒng)數(shù)據(jù)采集規(guī)范
- 滑降課件教學(xué)課件
- 德基國際物流知識培訓(xùn)班課件
- 中國電鏟鋼絲繩行業(yè)發(fā)展策略、市場環(huán)境及前景研究分析報告
- 德勤課件教學(xué)課件
- 疼痛診療學(xué)知識培訓(xùn)內(nèi)容課件
- 2025黑龍江青岡縣鄉(xiāng)鎮(zhèn)衛(wèi)生院招聘醫(yī)學(xué)畢業(yè)生5人模擬試卷及答案詳解(易錯題)
- 2025年醫(yī)院領(lǐng)導(dǎo)競聘面試題與參考答案
- 黑龍江省高等教育教學(xué)成果獎申請書
- 2025中礦金石實業(yè)有限公司社會招聘備考考試題庫附答案解析
- 2025年屠檢考務(wù)試卷及答案
- (正式版)DB65∕T 4260-2019 《薰衣草優(yōu) 質(zhì)種苗組培快繁生產(chǎn)技術(shù)規(guī)程》
- 五金材料知識培訓(xùn)課件
- 23《富貴不能淫》(公開課一等獎創(chuàng)新教學(xué)設(shè)計)統(tǒng)編版語文八年級上冊
- 校園科技教育主題班會活動方案
- 綠色食品認證合同協(xié)議
- 七年級生物分組實驗案例解析
- 筑夢青春強國有我+課件-2025-2026學(xué)年高二上學(xué)期國慶節(jié)主題班會
評論
0/150
提交評論