版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
面向?qū)ο蟪绦蛟O(shè)計C++實驗報告書班級: 姓名: 學號: 課程名稱面向?qū)ο蟪绦蛟O(shè)計C++實驗項目重載運算符C++的I/O操作實驗項目類型驗證演示綜合設(shè)計指導教師成績、實驗?zāi)康睦斫庵剌d運算符的意義,掌握用成員函數(shù)、友元函數(shù)重載運算符的特點及重載運算符函數(shù)的調(diào)運方法;理解多態(tài)的意義,掌握虛函數(shù)對對多態(tài)性的支持及調(diào)用方法,掌握抽象類的含義及其實現(xiàn)方式;學會將文件作為流來處理的方式,掌握在C++環(huán)境下建立磁盤文件和讀寫磁盤文件的基本方法,掌握cin和cout標準輸入輸出流的作用,掌握文件流的定義格式,學習標準輸入輸出及格式控制,熟悉流類庫中常用的類及其成員函數(shù)的用法二、實驗步驟1.設(shè)計一個點類Point,實現(xiàn)點對象之間的各種運算,如兩點是否相同,兩點的位置加減等運算等,可以重載定義如下的一些操作符,其原型分別如下:voidoffset(int,int); 〃提供對點的偏移voidoffset(Point&); 〃重載,偏移量用Point類對象表示booloperator==(Point&); 〃運算符重載,判斷兩個對象是否相同booloperator!=(Point&); //運算符重載,判斷兩個運算符是否不相同voidoperator+=(Point&); //運算符重載將兩個對象相加voidoperator-=(Point&); 〃運算符重載,將兩個對象相減Pointoperator+(Point&); 〃運算符重載,相加并將結(jié)果放在左操作數(shù)中Pointoperator-(Point&); 〃運算符重載,相減并將結(jié)果放在左操作數(shù)中2?現(xiàn)有一個容器類,其中定義了表示半徑(radius)的成員,并定義了兩個純虛函數(shù)surface_area()和volume(),分別求出其表面積和體積;以此為基類,分別定義出正方體、球體和圓柱體,并在各自的派生類中分別完成其表面積和體積的計算,編寫程序并驗證之。其中基類的原型如下:classcontainer{protected:doubleradius;public:container(doubleradius){container::radius=radius;}virtualdoublesurface_area()=O;virtualdoublevolume()=0;};voidmain(){container*p;cubeobj1(10);sphereobj2(6);cylinderobj3(4,5);p=&obj1;coutvv”輸出結(jié)果:”vvendl;cout<v”正方體表面積;”vvp->surface_area()vvendl;coutvv”正方體體積:”vvp->volume()vvendl;p=&obj2;coutvv”球體表面積;”vvp->surface_area()vvendl;coutvv”球體體積:”vvp->volume()vvendl;p=&objl;p=&obj3;coutvv”圓柱體表面積;”vvp->surface_area()vvendl;coutvv”圓柱體體積:”vvp->volume()vvendl;}三、上機過程原始記錄(源程序等)1、#include"iostream.h”classPoint{intx,y;public:Point(){x=y=0;}Point(inti,intj){x=i;y=j;}Point(Point&);~Point(){}voidoffset(int,int);〃提供對點的偏移voidoffset(Point&);//重載,偏移量用Point類對象表示booloperator==(Point&);〃運算符重載,判斷兩個對象是否相同booloperator!=(Point&);〃運算符重載,判斷兩個運算符是否不相同voidoperator+=(Point&);〃運算符重載將兩個對象相加voidoperator-=(Point&);〃運算符重載,將兩個對象相減Pointoperator+(Point&);〃運算符重載,相加并將結(jié)果放在左操作數(shù)中Pointoperator-(Point&);〃運算符重載,相減并將結(jié)果放在左操作數(shù)中intgetx(){returnx;}intgety(){returny;}voiddisp(){coutvv”(”vvxvv”,”vvyvv”)”vvendl;}};Point::Point(Point&p) {x=p.x;y=p.y;}voidPoint::offset(inti,intj){x+=i;y+=j;}voidPoint::offset(Point&p) {x+=p.getx();y+=p.gety();}boolPoint::operator==(Point&p){if(x==p.getx()&&y==p.gety())return1;elsereturn0;}boolPoint::operator!=(Point&p){if(x!=p.getx()||y!=p.gety())return1;elsereturn0;}voidPoint::operator+=(Point&p){x+=p.getx();y+=p.gety();}voidPoint::operator-=(Point&p){x-=p.getx();y-=p.gety();}PointPoint::operator+(Point&p){this->x+=p.x;this->y+=p.y;return*this;}PointPoint::operator-(Point&p) {this->x-=p.x;this->y-=p.y;return*this;}voidmain(){Pointp1(2,3),p2(3,4),p3(p2);coutvv"1:";p3.disp();p3.offset(10,10);coutvv"2:";p3.disp();coutvv"3:"vv(p2==p3)vvendl;coutvv"4:"vv(p2!=p3)vvendl;p3+=p1;coutvv"5:";p3.disp();p3-=p2;coutvv"6:";p3.disp();p3=p1+p3; 〃先將p3+p1的結(jié)果放在pl中然后賦給p3coutvv"7:";p3.disp();p3=p1-p2;coutvv"8:";p3.disp();}2、#includeviostream>#includeviomanip>usingnamespacestd;constdoublePi=3.14;classcontainer{public:container(doubler):radius(r){};virtualdoublegetSurfaceArea()=0;virtualdoublegetVdl()=0;protected:doubleradius;};classcube:publiccontainer{public:cube(doubler):container(r){};virtualdoublegetSurfaceArea();virtualdoublegetVdl();private:};doublecube::getSurfaceArea(){returnradius*radius*6;}doublecube::getVbl(){returnradius*radius*radius;}classsphere:publiccontainer{public:sphere(doubler):container(r){};virtualdoublegetSurfaceArea();virtualdoublegetVdl();private:};doublesphere::getSurfaceArea(){return4*Pi*radius*radius;}doublesphere::getVbl(){return4.0/3*Pi*radius*radius*radius;}classcylinder:publiccontainer{public:cylinder(doubler,doubleh):container(r),height(h){};virtualdoublegetSurfaceArea();virtualdoublegetVbl();private:doubleheight;};doublecylinder::getSurfaceArea(){return2*Pi*radius*radius+2*Pi*height;}doublecylinder::getVbl(){returnPi*radius*radius*height;}intmain(){container*p=newcube(1);coutvvsetw(10)vvsetiosflags(ios::fixed);cout<<"正方體表面積:\t"<<p->getSurfaceArea()<<endl;cout<<"正方體體積:\t"<<p->getV0l()<<endl;deletep;p=newsphere(6);coutvv"球體表面積:\t"<<p->getSurfaceArea()<<endl;coutvv"球體體積:\t\t"vvp->getV0l()vvendl;deletep;p=newcylinder(4,5);coutvv"圓柱體表面積:\t"vvp->getSurfaceArea()vvendl;coutvv"圓柱體體積:\t"vvp->getVbl()vvendl;deletep;p=NULL;return0;.} 3、要求建立一個磁盤文件,其內(nèi)容是0°?90°之間每隔5°的正弦值。程序框架如下:#includeviostream.h>#includevfstream.h>#includevmath.h>#definePI3.14159main(){floats[19];inti,a;ofstreamout("fsin.bny");if(!out){coutvv"Cannotopenfile."vvendl;return1;}for(i=0,a=-5;ivl9;i++){a+=5;s[i]=sin(a*PI/180.0);}out.write((unsignedchar*)&s,sizeofs);out.close()return0;}再將上面程序所建立的文件的內(nèi)容讀出并打印,其程序框架如下:#includeviostream.h>
1、2、“*C:\Progra>Files\MicrosoftVisualStudio\lyProjects\2T\Debug\27.eze*| |積?;積.1、2、“*C:\Progra>Files\MicrosoftVisualStudio\lyProjects\2T\Debug\27.eze*| |積?;積.ke面篥??面積yW:面積W:an體體歪體體s方方體體體es6.0000001.000000452.160000904.320000131.88
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個人借款借條范本編制標準2篇
- 山地生態(tài)旅游項目租賃合同二零二五年度版2篇
- 2025年度個人創(chuàng)業(yè)貸款合同示范文本7篇
- 2025年度臨建板房施工現(xiàn)場廢棄物處理與施工合同4篇
- 2025年度高端門面租賃及品牌推廣合作協(xié)議4篇
- 2025版美容院美容師顧客滿意度調(diào)查與改進合同4篇
- 二零二五版智能科技門面租賃合同電子版4篇
- 2025年度高速公路監(jiān)控弱電系統(tǒng)工程合同范本4篇
- 2025年度煤礦安全監(jiān)控系統(tǒng)安裝與維護服務(wù)合同4篇
- 2025材皮木糠生物質(zhì)顆粒生產(chǎn)合作協(xié)議3篇
- 2025年度版權(quán)授權(quán)協(xié)議:游戲角色形象設(shè)計與授權(quán)使用3篇
- 心肺復蘇課件2024
- 《城鎮(zhèn)燃氣領(lǐng)域重大隱患判定指導手冊》專題培訓
- 湖南財政經(jīng)濟學院專升本管理學真題
- 全國身份證前六位、區(qū)號、郵編-編碼大全
- 2024-2025學年福建省廈門市第一中學高一(上)適應(yīng)性訓練物理試卷(10月)(含答案)
- 《零售學第二版教學》課件
- 廣東省珠海市香洲區(qū)2023-2024學年四年級下學期期末數(shù)學試卷
- 房地產(chǎn)行業(yè)職業(yè)生涯規(guī)劃
- 江蘇省建筑與裝飾工程計價定額(2014)電子表格版
- MOOC 數(shù)字電路與系統(tǒng)-大連理工大學 中國大學慕課答案
評論
0/150
提交評論