




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计C+实验报告书班级: 姓名: 学号: 课程名称面向对象程序设计C+实验项目重载运算符C+的I/O操作实验项目类型验证演示综合设计指导教师成 绩一、实验目的1理解重载运算符的意义,掌握用成员函数、友元函数重载运算符的特点及重载运算符函数的调运方法;2理解多态的意义,掌握虚函数对对多态性的支持及调用方法,掌握抽象类的含义及其实现方式;3学会将文件作为流来处理的方式,掌握在C+环境下建立磁盘文件和读写磁盘文件的基本方法,掌握cin和cout标准输入输出流的作用,掌握文件流的定义格式,学习标准输入输出及格式控制,熟悉流类库中常用的类及其成员函数的用法二、实验步骤1设计一个点类Point,实现点对象之间的各种运算,如两点是否相同,两点的位置加减等运算等,可以重载定义如下的一些操作符,其原型分别如下: void offset(int,int); /提供对点的偏移 void offset(Point&); /重载,偏移量用Point类对象表示 bool operator=(Point&); /运算符重载,判断两个对象是否相同 bool operator!=(Point&); /运算符重载,判断两个运算符是否不相同 void operator+=(Point&); /运算符重载将两个对象相加 void operator-=(Point&); /运算符重载,将两个对象相减 Point operator+(Point&); /运算符重载,相加并将结果放在左操作数中 Point operator-(Point&); /运算符重载,相减并将结果放在左操作数中2现有一个容器类,其中定义了表示半径(radius)的成员,并定义了两个纯虚函数surface_area()和volume(),分别求出其表面积和体积;以此为基类,分别定义出正方体、球体和圆柱体,并在各自的派生类中分别完成其表面积和体积的计算,编写程序并验证之。其中基类的原型如下:class containerprotected: double radius;public:container(double radius)container:radius=radius;virtual double surface_area()=0;virtual double volume()=0; void main() container *p; cube obj1(10); sphere obj2(6); cylinder obj3(4,5); p=&obj1; cout”输出结果:”endl; cout”正方体表面积;”surface_area()endl; cout”正方体体积:”volume()endl; p=&obj2; cout”球体表面积;”surface_area()endl; cout”球体体积:”volume()endl;p=&obj1; p=&obj3; cout”圆柱体表面积;”surface_area()endl; cout”圆柱体体积:”volume()endl; 三、上机过程原始记录(源程序等)1、 #include iostream.hclass Point int x,y;public: Point() x=y=0; Point(int i,int j) x=i;y=j; Point(Point&); Point() void offset(int,int); /提供对点的偏移 void offset(Point&); /重载,偏移量用Point类对象表示 bool operator=(Point&);/运算符重载,判断两个对象是否相同 bool operator!=(Point&);/运算符重载,判断两个运算符是否不相同 void operator+=(Point&);/运算符重载将两个对象相加 void operator-=(Point&);/运算符重载,将两个对象相减 Point operator+(Point&);/运算符重载,相加并将结果放在左操作数中 Point operator-(Point&);/运算符重载,相减并将结果放在左操作数中 int getx() return x; int gety() return y; void disp() cout(x,y)x+=p.x; this-y+=p.y; return *this;Point Point:operator-(Point& p) this-x-=p.x; this-y-=p.y; return *this;void main()Point p1(2,3),p2(3,4),p3(p2);cout1:;p3.disp();p3.offset(10,10);cout2:;p3.disp();cout3:(p2=p3)endl;cout4:(p2!=p3)endl;p3+=p1;cout5:;p3.disp();p3-=p2;cout6:;p3.disp();p3=p1+p3; /先将p3+p1的结果放在p1中然后赋给p3cout7:;p3.disp();p3=p1-p2;cout8:;p3.disp();=2、#include #include using namespace std;const double Pi = 3.14;class containerpublic: container(double r):radius(r); virtual double getSurfaceArea() = 0; virtual double getVol() = 0;protected: double radius;class cube : public containerpublic: cube(double r): container(r); virtual double getSurfaceArea(); virtual double getVol();private:;double cube:getSurfaceArea() return radius * radius * 6;double cube:getVol() return radius * radius * radius;class sphere : public containerpublic: sphere(double r): container(r); virtual double getSurfaceArea(); virtual double getVol(); private:;double sphere:getSurfaceArea() return 4 * Pi * radius * radius;double sphere:getVol() return 4.0 / 3 * Pi * radius * radius * radius;class cylinder: public containerpublic: cylinder(double r, double h): container(r), height(h); virtual double getSurfaceArea(); virtual double getVol(); private: double height;double cylinder:getSurfaceArea() return 2 * Pi * radius * radius + 2 * Pi * height;double cylinder:getVol() return Pi * radius * radius * height;int main() container *p = new cube(1); cout setw(10) setiosflags(ios:fixed); cout 正方体表面积: t getSurfaceArea() endl; cout 正方体体积: t getVol() endl; delete p; p = new sphere(6); cout 球体表面积: t getSurfaceArea() endl; cout 球体体积: tt getVol() endl; delete p; p= new cylinder(4,5); cout 圆柱体表面积: t getSurfaceArea() endl; cout 圆柱体体积: t getVol() endl; delete p; p = NULL; return 0;3、(1)要求建立一个磁盘文件,其内容是090之间每隔5的正弦值。程序框架如下:#include#include#include#define PI 3.14159main() float s19; int i,a; ofstream out(fsin.bny); if(! out) coutCannot open file.endl; return 1; for(i=0,a=-5;i19;i+) a+=5; si=sin(a*PI/180.0); out.write(unsigned char*)&s,sizeof s); out.close(); return 0;(2)再将上面程序所建立的文件的内容读出并打印,其程序框架如下:#include#includemain()float S19;int i, a;ifstream in(“fsin.bny”);if(!in)cout “Cannot open file.”endl;return 1;in.read(unsigned char*)s, sizeof s);coutendl;cout “ i sin(i)”endl;for(i=0, a=-5; i19; i+)a+=5;cout “aSi”endl;in.close( );return 0;四、上机结果及分析1、2、3、在一个程序或一个编辑单元(即
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养殖基地采买合同范本
- 沙石供应合同范本
- 车辆工程劳务合同范本
- 个人雇佣合同范本 开车
- 多项机械租赁合同范本
- 房屋购买合同范本
- 农村协议买房合同范本
- 家具吊线转让合同范本
- 电厂供煤合同范本
- 早餐门面分租合同范本
- 《丙型肝炎防治指南》
- 2025至2030年中国酒店布草行业市场全景评估及投资前景展望报告
- 中小学校长在2025秋季开学第一次全体教师大会上讲话:人心决定温度人格决定高度人品决定厚度
- (2025年标准)供暖采暖协议书
- 2025-2026(一)秋季第一学期德育活动安排表
- 图解自然资源部《自然资源领域数据安全管理办法》
- 2023年烟台蓝天投资开发集团有限公司招聘笔试题库及答案解析
- DBJ 53-T-46-2012 云南省城镇道路及夜景照明工程施工验收规程
- 西方文明史(第五版)英文版全书ppt完整版课件整本书电子教案最全教学教程
- 商务英语翻译实务完整版教学ppt课件全套教程
- 非器质性失眠症临床路径
评论
0/150
提交评论