第6章 虛函數(shù)和多態(tài)性ppt課件.ppt

第6章 虛函數(shù)和多態(tài)性ppt課件.ppt

ID:58698977

大?。?74.00 KB

頁數(shù):48頁

時間:2020-10-04

第6章 虛函數(shù)和多態(tài)性ppt課件.ppt_第1頁
第6章 虛函數(shù)和多態(tài)性ppt課件.ppt_第2頁
第6章 虛函數(shù)和多態(tài)性ppt課件.ppt_第3頁
第6章 虛函數(shù)和多態(tài)性ppt課件.ppt_第4頁
第6章 虛函數(shù)和多態(tài)性ppt課件.ppt_第5頁
資源描述:

《第6章 虛函數(shù)和多態(tài)性ppt課件.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、第6章虛函數(shù)和多態(tài)性6.1虛函數(shù)6.2抽象類6.3虛析構(gòu)函數(shù)6.4多態(tài)所謂多態(tài),是指不同對象對相同消息作出不同的響應。多態(tài)是通過繼承、虛函數(shù)以及動態(tài)聯(lián)編來實現(xiàn)的。6.1虛函數(shù)6.1.1虛函數(shù)的定義虛函數(shù)是實際上不存在,但確實影響程序某些部分的函數(shù)。虛函數(shù)有多態(tài)性,即派生的類有共同的函數(shù),這些共同的函數(shù)有著相同的函數(shù)名稱和相同的參數(shù),但是卻有各自不同的具體實現(xiàn)部分。虛函數(shù)的定義方法如下:virtual<函數(shù)返回類型><虛函數(shù)名稱><(參數(shù)列表)>;定義虛函數(shù)要遵循下列規(guī)則:(1)類的靜態(tài)成員函數(shù)不可以定義為虛函數(shù)。(2)類的構(gòu)造函數(shù)不可以定義為虛函數(shù)。(3)非類的成員函數(shù)不可以定義為虛函

2、數(shù)?!纠?.1】假設一個程序可用來繪制不同的形狀,比如三角形、圓、矩形、橢圓等等,并假設這些類中每個類都有一個成員函數(shù)draw(),通過該函數(shù)可繪制對象。分析下列程序的輸出結(jié)果。#include"iostream.h"classperson{public:voidprintInfo()//基類中的函數(shù){cout<<"Person";}};classworker:publicperson{private:intkindofwork;public:voidprintInfo()//在派生類worker中重新定義{cout<<"Worker";}};classteacher:publ

3、icperson{private:intsubject;public:voidprintInfo()//在派生類teacher中重新定義{cout<<"Teacher";}};voidmain(){workerw;teachert;person*p;p=&w;//w是worker類對象p->printInfo();p=&t;p->printInfo();}程序的執(zhí)行結(jié)果為:PersonPerson注意:虛函數(shù)應該在基類中聲明,且不能在派生類中重新定義。如果使用派生類層次結(jié)構(gòu),必須在最高層上聲明虛函數(shù)。虛函數(shù)必須定義在它第一次被聲明的類中。在派生類中重新定義的虛函數(shù)必須和基類中的虛函

4、數(shù)有相同的參數(shù)個數(shù)和數(shù)據(jù)類型,否則,編譯器將認為重載虛函數(shù)。6.1.2純虛函數(shù)純虛函數(shù)只有一個函數(shù)聲明,并沒有具體函數(shù)功能的實現(xiàn)。可通過給函數(shù)指定零值進行聲明。純虛函數(shù)的定義格式為:virtual<函數(shù)類型><虛函數(shù)名稱>(<參數(shù)列表>)=0例如:virtualvoidgetdata()=0;不能創(chuàng)建含有一個或多個純虛函數(shù)的類對象,因為如果將函數(shù)調(diào)用發(fā)送給純虛方法是不會有任何回應的。純虛函數(shù)不可以直接調(diào)用,也不可以被繼承?!纠?.2】分析程序執(zhí)行結(jié)果。#include"iostream.h"classA{public:virtualvoidsize()=0;};classB:publi

5、cA{private:doublex;public:voidsize(){if(x>=0)cout<

6、能作為基類被子類繼承,不能定義抽象類的對象,其純虛函數(shù)的實現(xiàn)由子類給出。如果一個派生類繼承了抽象類,但是并沒有重新定義抽象類中的純虛函數(shù),則該派生類仍然是一個抽象類。只有當派生類中所繼承的所有純虛函數(shù)都被實現(xiàn)時,它才不是抽象類?!纠?.3】抽象類舉例。classShapes{public:virtualvoiddraw()=0;//純虛函數(shù)virtualvoidrotate(int)=0;//純虛函數(shù)};classcircle:publicShapes{private:doubleradius;public:circle(intr);voiddraw(){}voidrotate(int

7、){}doublearea(){return3.14159*radius*radius;}doublevolume(){return3*3.14159*radius*radius*radius/4;}};6.3虛析構(gòu)函數(shù)在析構(gòu)函數(shù)前面加上關(guān)鍵字virtual進行說明,稱該析構(gòu)函數(shù)為虛析構(gòu)函數(shù)。【例6.4】分析程序執(zhí)行結(jié)果。#include"iostream.h"classA{private:char*a_ptr;public:A()//構(gòu)造函數(shù)

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。