




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗四 多態(tài)性一、實驗?zāi)康?、掌握運(yùn)算符重載的基本方法。2、掌握友元運(yùn)算符函數(shù)和成員運(yùn)算符函數(shù)的使用方法及兩者之間的不同。3、學(xué)習(xí)虛函數(shù)的定義與使用方法。4、了解靜態(tài)多態(tài)性和動態(tài)多態(tài)性。5、學(xué)習(xí)使用虛函數(shù)和繼承實現(xiàn)動態(tài)多態(tài)性。二、試驗內(nèi)容1、編寫一個程序,要求:(1)生明一個類Complex(復(fù)數(shù)類),定義類Complex的兩個對象c1和c2,對象c1通過構(gòu)造函數(shù)直接指定復(fù)數(shù)的實部和虛部(類私有數(shù)據(jù)成員為double類型:real和imag)為2.5及3.7,對象c2通過構(gòu)造函數(shù)直接指定復(fù)數(shù)的實部和虛部為4.2及6.5;(2)定義友元運(yùn)算符重載函數(shù),它以c1、c2對象為參數(shù),調(diào)用該函數(shù)時能返回
2、兩個復(fù)數(shù)對象相加操作;(3)定義成員函數(shù)print,調(diào)用該函數(shù)時,以格式“real+imag i”輸出當(dāng)前對象的實部和虛部,例如:對象的實部和虛部分別是4.2和6.5,則調(diào)用print函數(shù)輸出格式為:4.2+6.5 i;(4)編寫主程序,計算出復(fù)數(shù)對象c1和c2相加結(jié)果,并將其結(jié)果輸出。#includeclass complexprivate:double real;double imag;public:complex(double r=0.0,double i=0.0);void print();friend complex operator+(complex &a,complex &b);
3、complex:complex(double r,double i)real=r;imag=i;complex operator+(complex &a,complex &b)complex temp;temp.imag=a.imag+b.imag;temp.real=a.real+b.real;return temp;void complex:print()coutreal+imagiendl;int main()complex c1(2.5,3.7),c2(4.2,6.5),c3;c3=c1+c2;c3.print();return 0;2、編寫一個程序,其中設(shè)計一個時間類Time,用來保
4、存時、分、秒等私有數(shù)據(jù)成員,通過重載操作符“+”實現(xiàn)兩個時間的相加。要求將小時范圍限制在大于等于0,分鐘范圍限制在059分,秒鐘范圍限制在059秒。提示:時間類Time的參考框架如下:class Time public: Time(int h=0,int m=0,int s=0);/構(gòu)造函數(shù) Time operator+(Time &);/運(yùn)算符重載函數(shù),實現(xiàn)兩個時間的相加 Time operator+();/運(yùn)算符重載函數(shù),實現(xiàn)兩個時間的相加 void disptime();/顯示時間函數(shù) private: int hours,minutes,seconds;#include#include
5、class Time public: Time(int h=0,int m=0,int s=0);/構(gòu)造函數(shù) Time operator+(Time &);/運(yùn)算符重載函數(shù),實現(xiàn)兩個時間的相加 Time operator+();/運(yùn)算符重載函數(shù),實現(xiàn)兩個時間的相加 void disptime();/顯示時間函數(shù) private: int hours,minutes,seconds;Time:Time(int h,int m,int s)hours=h;minutes=m;seconds=s;Time Time:operator +(Time &t1) Time p; p.seconds=sec
6、onds+t1.seconds; int t=p.seconds; p.seconds=t%60; p.minutes=minutes+t1.minutes+t/60; int m=p.minutes; p.minutes=m%60; p.hours=hours+t1.hours+m/60; return p;void Time:disptime() couthours時minutes分seconds秒endl;int main()Time t1(12,20,33),t2(5,17,58),t3;t3=t1+t2;cout時間t1endl;t1.disptime();cout時間t2endl;
7、t2.disptime();cout相加后的時間:endl;t3.disptime();return 0;3、寫一個程序,定義抽象類Container:class Container protected: double radius; public: Container(double r);/抽象類Container的構(gòu)造函數(shù) virtual double surface_area()=0;/純虛函數(shù)surface_area virtual double volume()=0;/純虛函數(shù)volume ;【要求】建立3個繼承Container的派生類:Sphere(球體)、Cylinder(圓柱
8、體)、Cube(正方體),讓每一個派生類都包含虛函數(shù)surface_area()和volume(),分別用來球體、圓柱體和正方體的表面積和體積。要求寫出主程序,應(yīng)用C+的多態(tài)性,分別計算邊長為6.0的正方體、半徑為5.0的球體,以及半徑為5.0和高為6.0的圓柱體的表面積和體積。#includeusing namespace std; class Container protected: double radius; public: Container(double r);/抽象類 Container 的構(gòu)造函數(shù) virtual double surface_area()=0;/純虛函數(shù)sur
9、face_area virtual double volume()=0;/純虛函數(shù)volume ; Container:Container(double r=0) radius=r; class Sphere:public Container public: Sphere(double x):Container(x) double surface_area() return 4*radius*radius*3.14; double volume() return 0.75*3.14*radius*radius*radius; ; class Cylinder:public Container
10、public: Cylinder(double h,double r):Container(r) hight=h; double surface_area() return 2*3.14*radius*radius+2*3.14*radius*hight; double volume() return 3.14*radius*radius*hight; protected: double hight; ; class Cube:public Container public: Cube(double r):Container(r) double surface_area() return 6*
11、radius*radius; double volume() return radius*radius*radius; ; int main() Container *p; Cube a(6.0); p=&a; cout正方體表面積:surface_area()endl; cout正方體體積:volume()endl; Sphere b(5.0); p=&b; cout球表面積:surface_area()endl; cout球體積:volume()endl; Cylinder c(6.0,5.0); p=&c; cout圓柱表面積:surface_area()endl; cout圓柱體體積:
12、volume()endl; return 0; 4、設(shè)計一個點(diǎn)類Point,其結(jié)構(gòu)如下:(1) Point類表示二維平面點(diǎn)的集合,數(shù)據(jù)成員由點(diǎn)的坐標(biāo)值表示,類型為int;(2) 三個重載構(gòu)造函數(shù):a) 一個是無參數(shù)的構(gòu)造函數(shù);b) 一個是帶坐標(biāo)值參數(shù)的構(gòu)造函數(shù),實現(xiàn)對數(shù)據(jù)成員的初始化;c) 一個是copy構(gòu)造函數(shù),實現(xiàn)用一個對象初始化本對象;(3) 兩個重載成員函數(shù):a) void offert(int , int ); 實現(xiàn)點(diǎn)的偏移,參數(shù)是偏移量;b) void offert(Point &); 實現(xiàn)點(diǎn)的偏移,參數(shù)Point類對象是偏移量;(4) 6個運(yùn)算符重載函數(shù):a) bool oper
13、ator = = (Point &);判斷兩個點(diǎn)對象是否相等;b) void operator + =(Point &);將兩個點(diǎn)對象相加;c) void operator +();將當(dāng)前對象自增1(前綴);d) void operator +(int );將當(dāng)前對象自增1(后綴);e) friend Point& operator + (Point &, Point &);將兩個點(diǎn)對象相加;f) friend Point &operator (Point &, Point &);將兩個點(diǎn)對象相減;(5) 兩個成員函數(shù)提供實例對象對私有數(shù)據(jù)的訪問:a) int GetX();b) int Ge
14、tY();(6)公有成員函數(shù)void Display();輸出對象的數(shù)據(jù)成員;#includeclass Pointprivate:int x;int y;public:Point() x=0; y=0;Point(int a,int b) x=a; y=b;Point(const Point &p)x=p.x; y=p.y;void offert(int,int);void offert(Point &);bool operator=(Point &);void operator+=(Point &);void operator+();void operator+(int); friend
15、Point& operator+(Point &, Point &);friend Point& operator-(Point &, Point &); void display(); int GetX() return x; int Gety() return y;void Point:offert(int a,int b) x+=a; y+=b;void Point:offert(Point &p) x+=p.x; y+=p.y;bool Point:operator=(Point &p) if(x=p.x&y=p.y) cout=endl; else cout!=endl; retur
16、n 0;void Point:operator+=(Point &p)x+=p.x;y+=y+p.y;void Point:operator+() x+;void Point:operator+(int) y+;Point&operator+(Point &a,Point &b) a.x=a.x+b.x;a.y=a.y+b.y; return a;Point&operator-(Point &a,Point &b) a.x=a.x-b.x;a.y=a.y-b.y; return a;void Point:display()cout(x,y)endl;int main() Point a(2,2),b(4,5),c(3,1),d,e,f,g(5,3),h;couta坐標(biāo);a.display(); coutb坐標(biāo);b.di
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園衛(wèi)生教育:正確洗手
- 2025屆陜西省西安市鐵一中高考化學(xué)四模試卷含解析
- 2025屆上海市崇明區(qū)高三下學(xué)期二模英語試題(含答案)
- 基金的行業(yè)發(fā)展介紹
- 護(hù)理病人職業(yè)道德規(guī)范
- 校長在高一年級月考成績質(zhì)量分析會上講話:-看高一月考成績咱教學(xué)得這么調(diào)整
- 江功省睢寧縣第一中學(xué)2025屆高三考前熱身化學(xué)試卷含解析
- 陜西藝術(shù)職業(yè)學(xué)院《基礎(chǔ)天文學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年管業(yè):地暖專用管項目合作計劃書
- 陜西銅川市同官高級中學(xué)2025年高三5月模擬(一模)考試化學(xué)試題含解析
- 電網(wǎng)工程設(shè)備材料信息參考價(2024年第四季度)
- 電子產(chǎn)品生產(chǎn)工藝流程手冊
- 平板顯示技術(shù):PI&Rubbing工藝簡介
- 口腔正畸緒論
- 學(xué)生宿舍樓層平面圖
- 道路線路測量設(shè)計書
- 小學(xué)一年級地方課程《人自然社會》全冊25課教案教學(xué)設(shè)計
- 斜拋運(yùn)動的規(guī)律(課堂PPT)
- 打架賠償協(xié)議書模板
- (完整)“六宮格”數(shù)獨(dú)—中級—180題
- CTC循環(huán)腫瘤細(xì)胞
評論
0/150
提交評論