




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、c語言程序設(shè)計課程實驗報告(第8次)院:數(shù)學(xué)與計算機(jī)學(xué)院名:張元杰 號:201510804033 業(yè):軟件工程 級:1班 人:實驗地點:6a-2實驗時間: 指導(dǎo)教師:實驗名稱:多態(tài)性與虛函數(shù)所使用的開發(fā)工具及環(huán)境:硬件pc機(jī)一臺 實驗?zāi)康?(1) 了解多態(tài)性的概念。(2) 了解虛函數(shù)的作用及使用方法。(3) 了解靜態(tài)關(guān)聯(lián)和動態(tài)關(guān)聯(lián)的概念和川法。(4) 了解純虛函數(shù)和抽象類的概念和用法。實驗內(nèi)容:1、分析程序運(yùn)行結(jié)果,掌握焜函數(shù)的使用。程序一:#include <iostream>using namespace std;class one public:virtual void f(
2、)cout«mone"«endl;);class two:public one public:two() cout«,two,«endl;;class three:public two public:virtual void f()two:f(); coutvv“three”;;void main() one aa, *p;two bb; /twothree cc; /twop = & cc;p->f();/one three cout«e ndl;)程序二#inelude <iostream>using n
3、amespace std;class base public:virtual void fn() cout «nin base class'd;class subclass :public base public:virtual void fn() cout «"in sub classn" 覆蓋;void main()base be盧p;subclass sc;p=&bc;p->fn();/in base classp=≻p->fn();/in sub class)2、實現(xiàn)一個類a,在a中有兩個私有的整型變量a
4、和b,定義構(gòu)造函數(shù)對a和b進(jìn)行初 始化,并實現(xiàn)成員函數(shù)gda ()取得a的值和gclb ()取b的值。實現(xiàn)類b從a繼承, 覆蓋geta (),使其返冋a的2倍。主函數(shù)屮聲明類b對象,調(diào)用類b屮的geta ()并將 結(jié)果輸出。3、設(shè)計一個計算圖形面積的類庫。它的頂層是一個抽彖類,并且提供相應(yīng)的接口函數(shù)。 抽象基類shape,派生出point類、矩形rectangle、正方形square, point類派生出圓 形circleo要求:(1) 每個類有構(gòu)造函數(shù)、析構(gòu)函數(shù),并有相應(yīng)的輸出語句,女ii: “正在構(gòu)造圓形”(2) 能顯示每個類的信息,如:輸出“我是圓形”(3) 能計算面積、周長(4) 定義
5、一個基類shape類型的指針,實現(xiàn)動態(tài)多態(tài)(5) 動態(tài)創(chuàng)建一個圓形對象,賦值給基類shape類型的指針變蜃,程序最示delete該 指針,保證析構(gòu)函數(shù)的正確調(diào)用(提示:虛析構(gòu)函數(shù))(6) 在主函數(shù)測試。4、設(shè)計一個基類base,其作用是計算一個圖形的面積,它只有一個公有的函數(shù)成員虛 函數(shù)area。再從base類公有派生一個三角形類triangle和一個圓類circle,在類 triangle和類circle中分別定義自己的area函數(shù),用于計算各自的面積。在主函數(shù) 中設(shè)計一個base類的對象指針,分別指向類triangle和類circle的對象,調(diào)用各自 的area函數(shù)顯示相應(yīng) 對象的面積。分
6、析:用虛函數(shù)實現(xiàn)多態(tài)。5. 將上題中的base類改為抽象類,應(yīng)用抽象類,求矩形、圓形的周長和而積。分析:將base類的其成員函數(shù)area和perimeter聲明為純虛函數(shù),base就成為一個 抽 象類。然后再從bose派生矩形類和圓形類,分別實現(xiàn)base屮純虛函數(shù)的功能.結(jié)果與分析:sy8-1:程序一:存 f:c+侮習(xí)ldebugl.exe程序二:sy8-2:#include<iostream> using namespace std; class apublic:a(int a,int b):a(a),b(b) virtual int geta()return a; friend
7、 class b;private:ini a;int b;class b:public apublic:b(int a,int b):a(a,b) int geta() return 2*a;);int main()a *p=new b3);cout«p->geta()«endl; system(hpausen);return 0;f:c- #供撿實驗 8sy82debugsy82,exe脣按任意鍵繼續(xù)sy8-3:#in clude<iostream>using namespace std;const double pl=3.1415926;class s
8、hapepublic:shape()cout«nconstructing shape.h«endl;virtual -shapc()cout«ndcstructing shape.h«cndl;(virtual void name()cout«nsharen«endl;)virtual double area()=0;virtual double c()=0;;class point: public shapepublic:point()cout«hconstructing point.m«endl;point()
9、cout«mdestructing point.h«endl;virtual void name()cout«hpointn«endl;) double area() return ();double c() return 0;);class recta ng le:public shapepublic:rectangle(int ljnt w):length(l),width(w)cout«mconstructing rectangle.u«endl;-rectangleo cout«hdestructing recta
10、ngle.m«endl;double area() return length * width;double c() return (length+width)*2;)void name()cout«mrectangleh«endl;)private:double length;double width;);class squre:public shapepublic:squre(int 1):l(1)cout«nconstructing squre.m«endl;-squre()coul«ndestructing squre.,
11、171;endl;void name()cout«hsqurem«endl;double area() return l*l;double c() return 4*l;private:double l;class circle: public virtual pointpublic:circle(double r):radious(r) cout«mconstructing circle.h«endl;) circle()cout«ndestructing circle.h«endl;)void name() cout«m
12、circlelf«endl;double area() return pi*radious*radious;double c() return 2*pi*radious;private:double radious;int main()shape *p;p=new point;p->name();cout«',c:,«p->c()«endl;cout«marea:h«p->area()«endl;delete p;cout«endl;p=new recta ng le(2,3);p->
13、;name();cout«mc:h«p->c()«endl; cout«harca:h«p->arca()«cndl;delete p;cout«endl;p=new squre(4);p->name();cout«mc:m«p->c()«endl;cout«marea:h«p->area()«e ndl;delete p;cout«endl;p二new circle(5);p->name();cout«mc:
14、m«p->c()«endl; cout«marea:h«p->area()«endl;delete p;system(hpausen);af:c - 實埶實驗 8sy8 3debugsy8-3.execonstructing shape. constructing point. po intc:0area:0destructing point. destructing shape.constructing shape. constructing rectangle. rectanglec:10area: 6destructing r
15、ectangle. destructing shape.constructing shape. constructing squre. squrec:16area:16destructing squre. destructing shape.constructing constructing constructing circle c:31.4159 area:78.5398 destructing circle. destructing point. destructing shape. 請按任意鍵繼續(xù)sy8-4:#in clude<iostream>using namespac
16、e std;const double pl=3.1415926;class basepublic:base() cout«mconstrucling base.m«endl;virtual basc()cout«hdcstructcd basc.u«cndl;virtual double area()=();class triangleipublic basepublic:triangle(double a,double b,double c):a(a),b(b),c(c)cout«nconstructing triangle.n«e
17、ndl;-triangle() cout«hdestructed triangle.n«endl;double area()return sqrt(0.5*(a+b+c)*(0.5*(a+b+c)-a)*(0.5*(a+b+c)-b)*(0.5*(a+b+c)-c); private:double a、b,c;class circle:public basepublic:circle(double r):radious(r)cout«hconstructing circle.n«endl;-circle() cout«hdestructed c
18、ircle.u«endl;double area() return pi*radious*radious;private:double radious;int main()base *p;p=new triangle(3,4,5);cout«marea:h«p->area()«endl;delete p;cout«endl;p=ncw circlc(4);cout«marea:,r«p->area()«endl;delete p;cout«endl;system(mpausen);return
19、 0;f:ct- 實驗 實驗趴sy 8 -4debu gsy8-4.execonstructing base. constructing triangle. area:6destructed triangle. destructed base.constructing base. constructing circle. area:50.2655 destructed civcle. destructed base.sy8-5:#in clude<iostream>using namespace std;const double pl=3.1415926;class basepub
20、lic:base()cout«hconstructing base.m«endl;)virtual base()cout«ndestructed base.h«endl;virtual double area()=0;virtual double perimeter()=o; 周長);class triangle:public basepublic:triangle(double a,double b,double c):a(a),b(b),c(c)cout«nconstructing triangle.n«endl; triangl
21、e()cout«hdestructed triangle.m«endl;double area() return sqrt(0.5*(a+b+c)*(0.5*(a+b+c)-a)*(0.5*(a+b+c)-b)*(0.5*(a+b+c)-c); double perimeter() return a+b+c;private:double a,b,c;class circle:public basepublic:circle(double r):radious(r)cout«mconstructing circle.n«endl;)circle() cout«11 destruc
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度礦產(chǎn)資源采礦權(quán)抵押合同范本及合同終止條件
- 二零二五年度智能家居系統(tǒng)定制安裝服務(wù)合同
- 二零二五年度酒店場地出租及管理合同范本
- 2025年度不銹鋼電梯配件銷售代理協(xié)議
- 二零二五年度WXLX09009型飛機(jī)發(fā)動機(jī)維修保養(yǎng)合同
- 2025年按季度結(jié)算的住宅租賃與裝修改造合同
- 2025版生物制藥原料采購合同保障醫(yī)藥安全
- 二零二五年度智能穿戴設(shè)備常規(guī)銷售合同
- 二零二五年度汽車銷售與售后服務(wù)加盟合同
- 二零二五年度彩鋼板產(chǎn)品展示會合作合同
- 刑事和解協(xié)議書自訴
- 奶茶服務(wù)協(xié)議合同
- 學(xué)生食堂維修改造工程施工組織設(shè)計
- 書籍保密協(xié)議書范文
- 2025年章魚小丸子項目可行性研究報告
- “中小學(xué)生每天至少2小時體育活動”的價值追求與實現(xiàn)路徑研究
- 2024年四川成都農(nóng)業(yè)科技中心招聘筆試真題
- 成都市房產(chǎn)抵押合同模板2025年
- 腎穿刺術(shù)的圍手術(shù)期護(hù)理
- 2024年寧夏物流集團(tuán)有限責(zé)任公司公開招聘筆試參考題庫附帶答案詳解
- 四川省2024年普通高等學(xué)校高職教育單獨招生文化考試數(shù)學(xué)試題
評論
0/150
提交評論