面向?qū)ο蟪绦蛟O(shè)計C++實驗報告書3_第1頁
面向?qū)ο蟪绦蛟O(shè)計C++實驗報告書3_第2頁
面向?qū)ο蟪绦蛟O(shè)計C++實驗報告書3_第3頁
面向?qū)ο蟪绦蛟O(shè)計C++實驗報告書3_第4頁
面向?qū)ο蟪绦蛟O(shè)計C++實驗報告書3_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

面向?qū)ο蟪绦蛟O(shè)計C++實驗報告書班級: 姓名: 學(xué)號: 課程名稱面向?qū)ο蟪绦蛟O(shè)計C++實驗項目重載運算符C++的I/O操作實驗項目類型驗證演示綜合設(shè)計指導(dǎo)教師成績、實驗?zāi)康睦斫庵剌d運算符的意義,掌握用成員函數(shù)、友元函數(shù)重載運算符的特點及重載運算符函數(shù)的調(diào)運方法;理解多態(tài)的意義,掌握虛函數(shù)對對多態(tài)性的支持及調(diào)用方法,掌握抽象類的含義及其實現(xiàn)方式;學(xué)會將文件作為流來處理的方式,掌握在C++環(huán)境下建立磁盤文件和讀寫磁盤文件的基本方法,掌握cin和cout標準輸入輸出流的作用,掌握文件流的定義格式,學(xué)習(xí)標準輸入輸出及格式控制,熟悉流類庫中常用的類及其成員函數(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論