版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、西華大學(xué)實 驗 報 告( 2010/ 2011 學(xué)年 第 二 學(xué)期)課程名稱面向?qū)ο蟪绦蛟O(shè)計實驗名稱多態(tài)性實驗時間年月日指導(dǎo)單位指導(dǎo)教師學(xué)生姓名班級學(xué)號學(xué)院(系)專 業(yè)實 驗 報 告實驗名稱多態(tài)性實驗實驗類型綜合實驗學(xué)時22一、 實驗?zāi)康暮鸵螅?)進(jìn)一步熟悉類的設(shè)計、運用繼承與派生機制設(shè)計派生類,合理設(shè)置數(shù)據(jù)成員和成員函數(shù)。(2)掌握雙目運算符、單目運算符的重載方法,對常用算術(shù)運算符能在自定義類中通過友元函數(shù)、成員函數(shù)進(jìn)行重載,以實現(xiàn)靜態(tài)多態(tài)性。(3)掌握通過繼承、虛函數(shù)、基類的指針或引用實現(xiàn)動態(tài)多態(tài)性的方法。(4)理解并掌握有純虛函數(shù)的抽象類的作用,在各派生類中重新定義各純虛函數(shù)的方法,以
2、及此時實現(xiàn)的動態(tài)多態(tài)性。二、實驗環(huán)境(實驗設(shè)備) 硬件: 微型計算機 軟件: microsoft visual c+6.0三、實驗原理及內(nèi)容實驗題目(1): 定義一個抽象類容器類container,其中定義了若干純虛函數(shù),實現(xiàn)求表面積、體積、輸出等功能。由此抽象類派生出正方體、球體和圓柱體等多個派生類,根據(jù)需要定義自己的成員變量,在各個派生類中重新定義各純虛函數(shù),實現(xiàn)各自類中相應(yīng)功能,各個類成員的初始化均由本類構(gòu)造函數(shù)實現(xiàn)。在主函數(shù)中,定義容器類的指針和各個派生類的對象,使指針指向不同對象處調(diào)用相同的函數(shù)能執(zhí)行不同的函數(shù)代碼,從而實現(xiàn)動態(tài)多態(tài)性。實驗解答: 根據(jù)實驗提示完成實驗,完整的程序代碼
3、如下:#includeusing namespace std;#define pi 3.14159class containerprotected:double radius;public:container(double r=0)radius=r;virtual void area()=0;virtual void volume()=0;virtual void print()=0;class cube:public containerprivate:double l;public:cube(double x)l=x; virtual void area()coutthe container
4、s area is:6*l*lendl;virtual void volume()coutthe containers volume is:l*l*lendl;virtual void print()coutit is a cube!n;class sphere:public containerprivate:double r;public:sphere(double y)r=y;virtual void area()coutthe containers area is:4*pi*r*rendl;virtual void volume()coutthe containers volume is
5、:4/3*pi*r*r*rendl;virtual void print() coutit is a sphere!n;class cylinder:public containerprivate:double r; double h;public:cylinder(double r1,double h1) r=r1;h=h1;virtual void area() coutthe containers area is:2*pi*r*r+2*pi*r*hendl;virtual void volume() coutthe containers volume is:pi*r*r*hendl; v
6、irtual void print()coutarea();p-volume();p-print(); p=&sp;p-area();p-volume();p-print();p=&cy;p-area();p-volume();p-print();實 驗 報 告你在主函數(shù)中調(diào)用該函數(shù)時測試動態(tài)多態(tài)性所增加的語句是: p=&cu; p=&sp; p=&cy;由兩步,請在小結(jié)中總結(jié)關(guān)于動態(tài)多態(tài)性的實現(xiàn)方法。 在基類與派生類中存在的同名成員函數(shù),定義時在形式參數(shù)的個數(shù),順序,類型方面有所不同,在程序編譯時就能根據(jù)時機參數(shù)與形式參數(shù)的匹配情況,確定該類對象究竟調(diào)用了哪一個成員函數(shù)。主函數(shù)中定義一個co
7、ntainer類對象,請在小結(jié)中記錄編譯時的error和warning信息,從而得出什么結(jié)論?純虛函數(shù)不能被調(diào)用,因為它只有函數(shù)名,而無具體實現(xiàn)代碼,無法實現(xiàn)具體的功能。實 驗 報 告實驗題目(2): 定義復(fù)數(shù)類complex,有實部、虛部兩個私有成員變量,在該類中定義多個重載的構(gòu)造函數(shù)、定義析構(gòu)函數(shù)和輸出函數(shù)print,復(fù)數(shù)的輸出形如12-3i,在類中重載+、-、*、/、+(分前+和后+)。在主函數(shù)中定義復(fù)數(shù)類的對象,實現(xiàn)復(fù)數(shù)的各種算術(shù)運算,通過重載實現(xiàn)靜態(tài)多態(tài)性。實驗解答:根據(jù)實驗提示完成實驗,完整的程序代碼如下:#includeusing namespace std;class comp
8、lexprivate:float real;float imag;public:complex(float r=0,float i=0)real=r;imag=i;void print()coutreal+imagendl; complex operator*(complex c1);complex operator/(complex c1);complex operator+(int);friend complex operator+(const complex &c1,const complex &c2);friend complex operator-(const complex &c1
9、,const complex &c2);friend complex operator+(complex &c1);complex complex:operator*(complex c1)/complex c;real=real*c1.real;imag=imag*c1.imag;return *this;complex complex:operator/(complex c1)/complex c;real=real/c1.real;imag=imag/c1.imag;return *this;complex complex:operator+(int) / complex c(*this
10、);real+;imag+;return *this;complex operator+(const complex &c1,const complex &c2)complex c;c.real=c1.real+c2.real;c.imag=c1.imag+c2.imag;return c;complex operator-(const complex &c1,const complex &c2)complex c;c.real=c1.real-c2.real;c.imag=c1.imag-c2.imag;return c;complex operator+(complex &c1)+c1.r
11、eal;+c1.imag;return c1;int main()complex a1(2.3,4.6),a2(3.6,2.8); complex a3,a4,a5,a6;a3=a1+a2;a4=a1-a2;a5=a1*a2;a6=a1/a2;couta1=;a1.print();couta2=;a2.print();couta3=a1+a2=;a3.print();couta4=a1-a2=;a4.print();couta5=a1*a2=;a5.print();couta6=a1/a2=;a6.print();a3=+a1;coutafter a3=+a1;couta1=;a1.print
12、();couta3=;a3.print();a4=a2+;coutafter a4=a2+;couta2=;a2.print();couta4=;a4.print();return 0;實 驗 報 告程序的運行結(jié)果是: a1=2.3+4.6 a2=3.6+2.8 a3=a1+a2=5.9+7.4 a4=a1-a2=-1.3+1.8 a5=a1*a2=8.28+12.88 a6=a1/a2=2.3+4.6 after a3=+a1 a1=3.3+5.6 a3=3.3+4.6 after a4=a2+ a2=4.6+3.8 a4=4.6+3.8將主函數(shù)中所有以隱式方式調(diào)用重載運算符的語句改寫成等效
13、的顯式調(diào)用重載運算符的語句為:以隱式方式調(diào)用重載運算符的語句等效的顯式調(diào)用重載運算符的語句a3=a1+a2;a3=operator+(a1,a2)a4=a1-a2;a4=operator-(a1,a2)a5=a1*a2;a5=a1.operator*(a2)a6=a1/a2;a6=a1.perator/(a2)a3=+a1;a3=operator+(a1)a4=a2+;a4=a2.operator+ 實 驗 報 告四、實驗小結(jié)(包括問題和解決方法、心得體會、意見與建議等)1.在題目(1)中由兩步,請總結(jié)關(guān)于動態(tài)多態(tài)性的實現(xiàn)方法。 在基類與派生類中存在的同名成員函數(shù),定義時在形式參數(shù)的個數(shù),順序,類型方面有所不同,在程序編譯時就能根據(jù)實際參數(shù)與形式參數(shù)的匹配情況,確定該類對象究竟調(diào)用了哪個成員函數(shù)。2.在題目(1)步中,在主函數(shù)中定義一個container類對象,請記錄編譯時的error和warning信息,從而得出什么結(jié)論? 純虛
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年酒店裝修設(shè)計與施工專項合同3篇
- 2024年股權(quán)投資合同樣本:基礎(chǔ)設(shè)施項目合作條款
- 2024年版出租車司機勞動合同范本
- 2024年苗木種植基地購買與種植服務(wù)協(xié)議3篇
- 2024年整車貨物運輸與車輛保養(yǎng)服務(wù)合同范本3篇
- 2024新品電商合作進(jìn)場銷售協(xié)議書3篇
- 畢業(yè)設(shè)計(論文)工作中期檢查表(完整版)
- 2024年虛擬現(xiàn)實技術(shù)研發(fā)招投標(biāo)合同
- 酒店員工福利政策淺析
- 2024年度德佑租賃合同范本(含租賃合同生效條件)3篇
- 酒店員工培訓(xùn)方案(3篇)
- 2024年協(xié)會工作計劃范例(2篇)
- 內(nèi)蒙古自治區(qū)赤峰市2024-2025學(xué)年高三上學(xué)期11月期中物理試題(解析版)
- 廣州廣東廣州市海珠區(qū)瑞寶街招聘雇員9人筆試歷年參考題庫頻考點試題附帶答案詳解
- 國家開放大學(xué)電大臨床藥理學(xué)形考任務(wù)1-3參考答案
- 2024年人教版七年級下冊英語期末綜合檢測試卷及答案
- 2025年高中政治學(xué)業(yè)水平考試時政考點歸納總結(jié)(復(fù)習(xí)必背)
- 統(tǒng)編版(2024新版)七年級下冊道德與法治期末復(fù)習(xí)背誦知識點提綱
- 房屋市政工程生產(chǎn)安全重大事故隱患判定標(biāo)準(zhǔn)(2024版)宣傳畫冊
- 老舊小區(qū)改造工程安全管理體系管理制度及措施
- 2024年山西省晉中市公開招聘警務(wù)輔助人員(輔警)筆試摸底測試(3)卷含答案
評論
0/150
提交評論