多態(tài)性與虛函數(shù)ppt課件.ppt

多態(tài)性與虛函數(shù)ppt課件.ppt

ID:58940117

大小:183.00 KB

頁數(shù):61頁

時間:2020-09-28

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

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

1、第12章多態(tài)性與虛函數(shù)虛函數(shù)多態(tài)性:調(diào)用同一個函數(shù)名,但可以根據(jù)需要實現(xiàn)不同的功能。多態(tài)性是面向?qū)ο蟮某绦蛟O(shè)計的關(guān)鍵技術(shù)。編譯時的多態(tài)性(函數(shù)重載)運行時的多態(tài)性(虛函數(shù))多態(tài)性運行時的多態(tài)性是指在程序執(zhí)行之前,根據(jù)函數(shù)名和參數(shù)無法確定應(yīng)該調(diào)用哪一個函數(shù),必須在程序的執(zhí)行過程中,根據(jù)具體的執(zhí)行情況來動態(tài)地確定可以將一個派生類對象的地址賦給基類的指針變量?;悓ο笈缮悓ο驜aseb;Derived;Base*basep;basepbasep=&b;basepbasep=&d;basep只能引用從基類繼承來的成員。xShow()xShow()yShow()basep->Sh

2、ow();basep->Show()基類指針派生類對象基類對象classPoint{floatx,y;public:Point(){}Point(floati,floatj){x=i;y=j;}floatarea(void){return0.0;}};constfloatPi=3.14159;classCircle:publicPoint{//類Point的派生類floatradius;public:Circle(floatr){radius=r;}floatarea(void){returnPi*radius*radius;}};voidmain(void){Point

3、*pp;//基類指針,可以將派生類對象的地址賦給基類指針Circlec(5.4321);pp=&c;cout<area()<Area();訪問到的只是從基類繼承來的同名成員。提出設(shè)想:能否用同一個調(diào)用形式,既能調(diào)用派生類又能調(diào)

4、用基類的同名函數(shù)。在程序中不是通過不同的對象名去調(diào)用不同派生層次中的同名函數(shù),而是通過指針調(diào)用它們。C++中的虛函數(shù)就是用來解決這個問題的。虛函數(shù)的作用是允許在派生類中重新定義與基類同名的函數(shù),并且可以通過基類指針或引用來訪問基類和派生類中的同名函數(shù)。例如,在一個圖形類繼承結(jié)構(gòu)中,設(shè)類Cshape是所有具體圖形類(如矩形、三角形、圓形等)的基類,則函數(shù)調(diào)用語句pShape->Draw()可能是繪制一個矩形,也可能是繪制一個三角形或一個圓。具體繪制什么圖形,取決于pShape所指的對象。在C++中,是通過虛函數(shù)機制來實現(xiàn)這種類的行為的多態(tài)性?;悓ο笈缮悓ο驜aseb;D

5、erived;basepbasepxShow()xShow()yShow()basep->Show()Base*basep;basep=&b;basep=&d;basep->Show();即指向派生類新增的成員函數(shù)需要將基類中的Show()說明為虛函數(shù)若要訪問派生類中相同名字的函數(shù),必須將基類中的同名函數(shù)定義為虛函數(shù),這樣,將不同的派生類對象的地址賦給基類的指針變量后,就可以動態(tài)地根據(jù)這種賦值語句調(diào)用不同類中的函數(shù)。classPoint{floatx,y;public:Point(){}Point(floati,floatj){x=i;y=j;}virtualfloata

6、rea(void){return0.0;}};constfloatPi=3.14159;classCircle:publicPoint{//類Point的派生類floatradius;public:Circle(floatr){radius=r;}floatarea(void){returnPi*radius*radius;}};voidmain(void){Point*pp;//基類指針,可以將派生類對象的地址賦給基類指針Circlec(5.4321);pp=&c;cout<area()<

7、態(tài)束定(或關(guān)聯(lián)/聯(lián)編/綁定),按照實際對象c調(diào)用了Circle中的函數(shù)area()。使Point類中的area()與Circle類中的area()有一個統(tǒng)一的接口。輸出:92.7011聲明為虛函數(shù)調(diào)用虛函數(shù)虛函數(shù)再定義虛函數(shù)的定義和使用可以在程序運行時通過調(diào)用相同的函數(shù)名而實現(xiàn)不同功能的函數(shù)稱為虛函數(shù)。定義格式為:virtualFuncName();一旦把基類的成員函數(shù)定義為虛函數(shù),由基類所派生出來的所有派生類中,該函數(shù)均保持虛函數(shù)的特性。在派生類中重新定義基類中的虛函數(shù)時,可以不用關(guān)鍵字virt

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

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

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