歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

《面向?qū)ο蟪绦蛟O(shè)計》講義.ppt

  • 資源ID:8313184       資源大?。?span id="o8mxfac" class="font-tahoma">485.50KB        全文頁數(shù):38頁
  • 資源格式: PPT        下載積分:9.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

《面向?qū)ο蟪绦蛟O(shè)計》講義.ppt

面向?qū)ο蟪绦蛟O(shè)計 講義 第12章 12 1多態(tài)性在C 中的體現(xiàn)所謂多態(tài)性就是當(dāng)不同對象收到相同的消息時產(chǎn)生不同的動作 12 1 1編譯時的多態(tài)性1 在一個類中說明的重載2 基類成員函數(shù)在派生類中重載12 1 2運行時的多態(tài)性先看下面的例子 第12章多態(tài)性與虛函數(shù) include includeclasspoint protected intx y public point intx inty point x x point y y virtualvoidshow 定義虛函數(shù) putpixel x y getcolor classcircles publicpoint intradius public circles intx inty intradius point x y circles radius radius voidshow circles x y radius main pointp1 10 10 circlesc1 100 100 50 setcolor 14 point ptr 定義指向基類的指針ptr 調(diào)用c1對象的show 12 2虛函數(shù)12 2 1對象指針1 一般對象的指針語法與指向一般變量的指針相同 2 引入派生類后的對象指針任何被說明為指向基類的指針都可以指向它的公有派生類 使用派生類對象指針時應(yīng)注意的問題 1 可以用一個聲明讓指向基類對象的指針指向它的公有派生的對象 禁止指向私有派生的對象 2 不能將一個聲明為指向派生類對象的指針指向其基類的一個對象 3 聲明為指向基類對象的指針 當(dāng)其指向派生類對象時 只能利用它來直接訪問派生類中從基類繼承來的成員 不能訪問公有派生類中特定的成員 12 2 2為什么要引入虛函數(shù) includeclassbase public voidwho cout thisistheclassofbase n classderive1 publicbase public voidwho cout thisistheclassofderive1 n classderive2 publicbase public voidwho cout thisistheclassofderive2 n main baseobj1 p derive1obj2 derive2obj3 p 運行結(jié)果 thisistheclassofbase thisistheclassofbase thisistheclassofbase thisistheclassofderive1 thisistheclassofderive2 從結(jié)果可以看出 通過指針引起的普通成員函數(shù)調(diào)用 僅僅與指針的類型有關(guān) 而與此刻正指向什么對象無關(guān) 12 2 3虛函數(shù)的定義及使用1 虛函數(shù)的定義 includeclassbase public virtualvoidwho 定義虛函數(shù) cout base n classfrist publicbase public voidwho 重新定義虛函數(shù) cout thefirstderivation n classsecond publicbase public voidwho 重新定義虛函數(shù) coutwho 調(diào)用base類的who 版本 ptr 調(diào)用second類的who 版本 運行結(jié)果 basethefirstderivationthesecondderivation 2 虛函數(shù)與重載函數(shù)的關(guān)系3 多繼承中的虛函數(shù) includeclassa public virtualvoidf 定義f 為虛函數(shù) cout classa n classb public voidf 定義f 為一般函數(shù) cout classb n classaa publica publicb public voidf coutf 調(diào)用a類的f ptr2 調(diào)用b類的f ptr1 調(diào)用b類的f 此處f 為非虛函數(shù) 而ptr2 又為b的指針 運行結(jié)果 classaclassbclassaaclassb 若一個派生類 它的多個基類中有公共的基類 在公共基類中定義一個虛函數(shù) 則多級派生以后仍可以重新定義虛函數(shù) 使用級聯(lián)式派生時要注意 指向派生類的指針不能繼承 也就是說 基類的指針可以指向它的派生類 但不能再指向它的派生類的派生類 4 基類構(gòu)造函數(shù)調(diào)用虛函數(shù)自學(xué) 12 2 4虛函數(shù)舉例例3 include pragmahdrstop include U12 2 4 3 h pragmapackage smart init pragmaresource dfm Tf12 2 4 3 f12 2 4 3 enumbool false true structelement 定義鏈表中的結(jié)點結(jié)構(gòu)intval element next classlist 定義鏈表類element elems public list elems 0 list virtualboolinsert int 定義虛函數(shù)virtualbooldeletes int 定義虛函數(shù)boolcontain int voidprint classset publiclist intcard public set card 0 boolinsert int 重定義虛函數(shù)booldeletes int 重定義虛函數(shù) list list element tmp elems for element elem elems elem 0 tmp elem elem elem next deletetmp boollist insert intval 定義list類中插入元素的成員函數(shù) element elem newelement 為新元素分配內(nèi)存if elem 0 elem val val 將元素插入鏈表頭elem next elems elems elem returntrue elsereturnfalse boollist deletes intval 定義list類中刪除元素的成員函數(shù) if elems 0 returnfalse 若表為空 返回falseelement tmp elems if elems val val 若待刪除的元素為鏈表頭元素elems elems next deletetmp returntrue else for element elem elems elem next 0 elem next if elem next val val 循環(huán)查找待刪除元素tmp elem next elem next tmp next deletetmp returntrue returnfalse boollist contain intval 判元素val在鏈表中是否存在if elems 0 returnfalse if elems val val returntrue elsefor element elem elems elem next 0 elem elem next if elem next val val returntrue returnfalse voidlist print if elems 0 return inti 1 staticintj 0 j for element elem elems elem 0 elem elem next f12 2 4 3 Canvas TextOut 30 i 20 j IntToStr elem val boolset insert intval 在set類中的insert的重定義版本if contain val boolset deletes intval 在set類中的deletes重定義版本if list deletes val 調(diào)用基類中的此函數(shù)版本 card returntrue returnfalse fastcallTf12 2 4 3 Tf12 2 4 3 TComponent Owner TForm Owner void fastcallTf12 2 4 3 btnRunClick TObject Sender list ptr list1 定義基類對象list1和基類指針ptrsetset1 定義set類對象ptr ptr insert 456 ptr insert 23 ptr print 調(diào)用list類中的成員函數(shù) void fastcallTf12 2 4 3 btnEndClick TObject Sender Close 12 3抽象類12 3 1純虛函數(shù)與抽象類1 純虛函數(shù)的概念定義形式 virtualtypefunc name 參數(shù)表 0 注意事項 在基類中定義為純虛函數(shù)的函數(shù) 在任何派生類中都必須定義自己的版本 否則將引起語法錯誤 2 抽象類的概念如果類中至少有一個純虛函數(shù) 那么就稱該類為抽象類 使用抽象類的幾點規(guī)定 1 抽象類只能用作其它類的基類 不能建立抽象類對象 2 抽象類不能用作參數(shù)類型 函數(shù)返回類型或顯式轉(zhuǎn)換的類型 3 可以聲明指向抽象類的指針和引用 此指針可以指向它的派生類 進(jìn)而實現(xiàn)多態(tài)性 舉例說明如下 classfigure public virtualdraw 0 figurea 錯誤 不能建立抽象類對象figure ptr 正確 可以聲明指向抽象類的指針figuref 錯誤 抽象類不能作為函數(shù)的返回類型voidg figure 錯誤 抽象類不能作為函數(shù)的參數(shù)類型figure 正確 可以聲明抽象類的引用 12 3 2純虛函數(shù)多態(tài)性的體現(xiàn)例2 includeclasscontainer 定義一個抽象類protected doubleradius public container doubleradius container radius radius virtualdoublesurface area 0 純虛函數(shù)virtualdoublevolume 0 純虛函數(shù) classcube publiccontainer 定義正方體類public cube doubleradius container radius doublesurface area 虛函數(shù)在本類中的定義版本doublevolume classsphere publiccontainer 定義球體類public sphere doubleradius container radius doublesurface area 虛函數(shù)在本類中的定義版本doublevolume classcylinder publiccontainer 定義圓柱體類doubleheight public cylinder doubleradius doubleheight container radius cylinder height height doublesurface area 虛函數(shù)在本類中的定義版本doublevolume doublecube doublesurface area return radius radius 6 doublecube volume return radius radius radius doublesphere doublesurface area return4 3 1416 radius radius doublesphere volume return3 1416 radius radius radius 4 3 doublecylinder doublesurface area return3 1416 2 radius height radius doublecylinder volume return3 1416 radius radius height main container ptr cubeobj1 5 sphereobj2 5 cylinderobj3 5 5 ptr

注意事項

本文(《面向?qū)ο蟪绦蛟O(shè)計》講義.ppt)為本站會員(max****ui)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!