譚浩強C程序設計n學習教案_第1頁
譚浩強C程序設計n學習教案_第2頁
譚浩強C程序設計n學習教案_第3頁
譚浩強C程序設計n學習教案_第4頁
譚浩強C程序設計n學習教案_第5頁
已閱讀5頁,還剩50頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、會計學1譚浩強譚浩強C程序設計程序設計(chn x sh j) n第一頁,共55頁。動態多態性:是在程序運行過程中才動態地確定操作所針對的對象。它又稱運行時的多態性。動態多態性是通過虛函數(hnsh)(virtual function)實現的。在本章中主要介紹動態多態性和虛函數(hnsh)。第2頁/共55頁第二頁,共55頁。第3頁/共55頁第三頁,共55頁。(1) 聲明基類Point類 寫出聲明基類Point的部分:#include /聲明類Point /聲明一個類包括什么?class Pointpublic: Point(float x=0,float y=0);/有默認參數的構造函數第4頁

2、/共55頁第四頁,共55頁。第5頁/共55頁第五頁,共55頁。第6頁/共55頁第六頁,共55頁。第7頁/共55頁第七頁,共55頁。第8頁/共55頁第八頁,共55頁。第9頁/共55頁第九頁,共55頁。第10頁/共55頁第十頁,共55頁。第11頁/共55頁第十一頁,共55頁。第12頁/共55頁第十二頁,共55頁。第13頁/共55頁第十三頁,共55頁。cy1.Circle:area( )。用這種方法來區分兩個同名的函數。但是這樣做很不方便。第14頁/共55頁第十四頁,共55頁。C+中的虛函數就是用來解決這個問題的。虛函數的作用是允許在派生類中重新定義與基類同名的函數,并且可以通過基類指針或引用來訪問

3、基類和派生類中的同名函數。方法:由基類指針,訪問各層次中的同名函數。例12.2。再討論使用虛函數的情況。第15頁/共55頁第十五頁,共55頁。第16頁/共55頁第十六頁,共55頁。/Student類成員函數的實現類成員函數的實現Student:Student(int n, string nam,float s) /定義定義(dngy)構造函數構造函數 num=n;name=nam;score=s;void Student:display( ) /定義定義(dngy)輸出函數輸出函數coutnum:numnname:namenscore:scorenn;第17頁/共55頁第十七頁,共55頁。第1

4、8頁/共55頁第十八頁,共55頁。第19頁/共55頁第十九頁,共55頁。第20頁/共55頁第二十頁,共55頁。第21頁/共55頁第二十一頁,共55頁。數相同,并根據派生類的需要重新定義函數體。第22頁/共55頁第二十二頁,共55頁。指針變量,并使它指向同一類族中需要調用該函數的對象。(4) 通過該指針變量調用此虛函數,此時調用的就是指針變量指向的對象的同名函數。第23頁/共55頁第二十三頁,共55頁。第24頁/共55頁第二十四頁,共55頁。第25頁/共55頁第二十五頁,共55頁。第26頁/共55頁第二十六頁,共55頁。第27頁/共55頁第二十七頁,共55頁。法確定調用對象的。第28頁/共55頁

5、第二十八頁,共55頁。的,因此也稱為滯后關聯(late binding)。第29頁/共55頁第二十九頁,共55頁。第30頁/共55頁第三十頁,共55頁。口地址。系統在進行動態關聯時的時間開銷是很少的,因此,多態性是高效的。第31頁/共55頁第三十一頁,共55頁。第32頁/共55頁第三十二頁,共55頁。第33頁/共55頁第三十三頁,共55頁。第34頁/共55頁第三十四頁,共55頁。第35頁/共55頁第三十五頁,共55頁。先調用了派生類的析構函數,再調用了基類的析構函數,符合人們的愿望。第36頁/共55頁第三十六頁,共55頁。空的虛析構函數,以保證在撤銷動態分配空間時能得到正確的處理。構造函數不能

6、聲明為虛函數。這是因為在執行構造函數時類對象還未完成建立過程,當然談不上函數與類對象的綁定。第37頁/共55頁第三十七頁,共55頁。area函數(hnsh)的功能不同,一個是求圓面積,一個是求圓柱體表面積。僅供派生而無實際意義的函數(hnsh),故純虛之。第38頁/共55頁第三十八頁,共55頁。函數這就將area聲明為一個純虛函數(pure virtual function)。純虛函數是在聲明虛函數時被“初始化”為0的函數。聲明純虛函數的一般形式是virtual 函數類型 函數名 (參數表列) =0;第39頁/共55頁第三十九頁,共55頁。進行定義。如果在基類中沒有保留函數名字,則無法實現多態

7、性。如果在一個類中聲明了純虛函數,而在其派生類中沒有對該函數定義,則該虛函數在派生類中仍然為純虛函數。第40頁/共55頁第四十頁,共55頁。base class)。第41頁/共55頁第四十一頁,共55頁。以被調用。這個派生類就不是抽象類,而是可以用來定義對象的具體類(concrete class)。如果在派生類中沒有對所有純虛函數進行定義,則此派生類仍然是抽象類,不能用來定義對象。第42頁/共55頁第四十二頁,共55頁。第43頁/共55頁第四十三頁,共55頁。閱讀,分段插入了一些文字說明。程序如下: 第44頁/共55頁第四十四頁,共55頁。第45頁/共55頁第四十五頁,共55頁。第46頁/共55頁第四十六頁,共55頁。第47頁/共55頁第四十七頁,共55頁。第48頁/共55頁第四十八頁,共55頁。第49頁/共55頁第四十九頁,共55頁。第50頁/共55頁第五十頁,共55頁。第51頁/共55頁第五十一頁,共55頁。把各類中共(zhn n)有的成員函數集中在抽象基類中聲明。(4) 抽象基類是本類族的公共接口。或者說,從同一基類派生出的多個類有同一接口。(5) 區別靜態關聯和動態關聯。第52頁/共55頁第五十二頁,共55頁。不知道類是怎樣聲明的,但是可以使用這些類來派生出自己的類。利

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論