




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
面向對象程序設計C++實驗報告書班級: 姓名: 學號: 課程名稱面向對象程序設計C++實驗項目重載運算符C++的I/O操作實驗項目類型驗證演示綜合設計指導教師成績、實驗目的理解重載運算符的意義,掌握用成員函數、友元函數重載運算符的特點及重載運算符函數的調運方法;理解多態的意義,掌握虛函數對對多態性的支持及調用方法,掌握抽象類的含義及其實現方式;學會將文件作為流來處理的方式,掌握在C++環境下建立磁盤文件和讀寫磁盤文件的基本方法,掌握cin和cout標準輸入輸出流的作用,掌握文件流的定義格式,學習標準輸入輸出及格式控制,熟悉流類庫中常用的類及其成員函數的用法二、實驗步驟1.設計一個點類Point,實現點對象之間的各種運算,如兩點是否相同,兩點的位置加減等運算等,可以重載定義如下的一些操作符,其原型分別如下:voidoffset(int,int); 〃提供對點的偏移voidoffset(Point&); 〃重載,偏移量用Point類對象表示booloperator==(Point&); 〃運算符重載,判斷兩個對象是否相同booloperator!=(Point&); //運算符重載,判斷兩個運算符是否不相同voidoperator+=(Point&); //運算符重載將兩個對象相加voidoperator-=(Point&); 〃運算符重載,將兩個對象相減Pointoperator+(Point&); 〃運算符重載,相加并將結果放在左操作數中Pointoperator-(Point&); 〃運算符重載,相減并將結果放在左操作數中2?現有一個容器類,其中定義了表示半徑(radius)的成員,并定義了兩個純虛函數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”輸出結果:”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&);〃運算符重載,相加并將結果放在左操作數中Pointoperator-(Point&);〃運算符重載,相減并將結果放在左操作數中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的結果放在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、要求建立一個磁盤文件,其內容是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;}再將上面程序所建立的文件的內容讀出并打印,其程序框架如下:#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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 窗簾行業品牌形象塑造與傳播考核試卷
- 糧油企業生產流程標準化與質量控制考核試卷
- 木地板品牌國際化戰略與市場拓展考核試卷
- 彈射玩具產品創新設計思路與方法考核試卷
- 砼結構構件的預制件疲勞試驗考核試卷
- 紡織品的耐磨性與強度分析考核試卷
- 半導體照明器件的環境適應性測試標準考核試卷
- 線上線下融合的衛浴零售模式探索考核試卷
- 天津城建大學《形勢與政策(5)》2023-2024學年第二學期期末試卷
- 三門峽職業技術學院《基本樂理專業理論教學》2023-2024學年第二學期期末試卷
- 豐田鋒蘭達說明書
- 2023年東莞市人民醫院醫師規范化培訓招生(放射科)考試參考題庫含答案
- 2022年甘肅省張掖市輔警協警筆試筆試模擬考試(含答案)
- 勾頭作業施工方案
- 中醫醫院重癥醫學科建設與管理指南
- 創傷性網胃炎
- LY/T 1556-2000公益林與商品林分類技術指標
- GB/T 3522-1983優質碳素結構鋼冷軋鋼帶
- 主要電氣設備絕緣電阻檢查記錄
- 探析小學數學作業分層設計與評價獲獎科研報告
- 2023年陜西高考理科數學試題
評論
0/150
提交評論