




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+实验报告2014年6月4 日实验题目:形状类的设计与实现实验目的:1)什么是多态,多态是面向对象程序设计的重要特性之一,它与封装性和继承性构成了面向对象程序设计的三大特性。所谓多态,是指不同类型的对象接收相同的消息时产生不同的行为。2)虚函数的作用,由于多态分为静态联编和动态联编,而在静态联编下,同一个成员函数在基类和派生类中的不同版本是不会在运行时根据程序代码的指定进行自动绑定的。因此必须通过类的虚函数机制,才能实现基类和派生类中的成员函数不同版本的动态联编。3)运算符重载的作用,运算符重载就是赋予已有的运算符多重含义,是一种静态联编的多态。通过重新定义运算符,使其能够用于特定类对象执行特定的功能,从而增强了C+语言的扩充能力。实验内容:(1) 出现Ex_Shape.cpp:定义一个抽象类CShape,包含纯虚函数Area(用来计算面积)和SetData(用来重设形状大小)。然后派生出三角形CTriangle类,矩形CRect类,园CCircle类,分别求其面积。最后定义一个CArea类,计算这几个形状的面积之和,各形状的数据通过CArea类构造函数或成员函数来设置。编写一个完整的程序。(2) 程序Ex_Complex.cpp:定义一个复数类CComplex,通过重载运算符“*“和”/“,直接实现两个复数之间的乘除运算。运算符”*“用成员函数实现重载,而运算符”/“用友元函数实现重载。编写一个完整的程序(包括测试运算符的程序部分)。提示:两个复数相乘的计算公式为(a+bi)*(c+di)=(ac-bd)+(ad+bc)i,而两个复数相除的计算公式为(a+bi)/(c+di)=(ac+bd)/(c*c+d*d)+(bc-ad)/(c*c+d*d)i。实验步骤:1) 在D:Visual C+程序GuHao文件夹中创建一个新的子文件夹62) 启动Visual C+6.0,输入程序Ex_Shape.cpp并进行运行和编译,相关代码如下:#includeclass CShapepublic:virtual float Area()=0;/将Area定义成纯虚函数virtual void SetData(float f1,float f2)=0;/将SetData定义成纯虚函数;class CTriangle:public CShapepublic:CTriangle(float h=0,float w=0)H=h;W=w;float Area()/在派生类定义纯虚函数的具体实现代码return (float)(H*W*0.5);void SetData(float f1,float f2)H=f1;W=f2;private:float H,W;class CRect:public CShapepublic:CRect(float h=0,float w=0)H=h;W=w;float Area()/在派生类定义纯虚函数的具体实现代码return (float)(H*W);void SetData(float f1,float f2)H=f1;W=f2;private:float H,W;class CCircle:public CShapepublic:CCircle(float r=0)R=r;float Area()/在派生类定义纯虚函数的具体实现代码return (float)(3.14159265*R*R);void SetData(float r,float)/保持与纯虚函数一致R=r;private:float R;class CAreapublic:/忘记设置访问权限CArea(float triWidth,float triHeight,float rcWidth,float rcHeight,float r)ppShape=new CShape*3;ppShape0=new CTriangle(triWidth,triHeight);ppShape1=new CRect(rcWidth,rcHeight);ppShape2=new CCircle(r);CArea()for(int i=0;i2)|(nSetData(f1,f2);void CalAndPrint(void)/计算并输出float fSum=0.0;char* str3=三角,矩,园;for(int i=0;iArea();/通过基类指针,求不同形状的面积coutstri形面积是:areaendl;fSum+=area;cout总面积是:fSumendl;private:CShape *ppShape;/指向基类的指针数组;int main()/main拼写错误CArea a(10,20,6,8,6.5);a.CalAndPrint();a.SetShapeData(0,20,30);/重设三角形大小a.CalAndPrint();a.SetShapeData(2,11);/重设园的半径大小a.CalAndPrint();a.SetShapeData(1,2,5);/重设矩形大小a.CalAndPrint();return 0;3) Ex_Shape.cpp的运行结果如下:4)新建一个程序Ex_Complex.cpp,并进行编译和运行,代码如下:#includeclass CComplexpublic:CComplex(double r=0,double i=0)realPart=r;imagePart=i;void Print()cout该复数实部=realPart,虚部=imagePartendl;CComplex operator *(CComplex &b);/成员函数重载运算符friend CComplex operator / (CComplex &a,CComplex &b);/友元函数重载运算符private:double realPart;/复数的实部double imagePart;/复数的虚部;CComplex CComplex:operator *(CComplex &b)CComplex temp;temp.realPart=realPart*b.realPart-imagePart*b.imagePart;temp.imagePart=realPart*b.imagePart+imagePart*b.realPart;return temp;CC omplex operator / (CComplex &a,CComplex &b)CComplex temp;double d=b.realPart*b.realPart+b.imagePart*b.imagePart;temp.realPart=(a.realPart*b.realPart+a.imagePart *b.imagePart)/d;temp.imagePart=(a.imagePart*b.imagePart-a.realPart *b.imagePart)/d;return temp;int main()CComplex c1(12,20),c2(50,70),c;c=c1*c2;c.Print();c=c1/c2;c.Print();return 0;5)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024医疗卫生系统人员考前冲刺测试卷附答案详解(黄金题型)
- 2025年自考专业(计算机应用)考试黑钻押题及答案详解(名师系列)
- 2024年安全员考试预测复习附答案详解(预热题)
- 2025年安全施工现场监控与预警系统建设合同
- 酒、饮料及精制茶制造人员自我提分评估含答案详解【能力提升】
- 高校教师资格证之《高等教育法规》考前冲刺模拟题库提供答案解析带答案详解(巩固)
- 2025广播电视编辑记者高分题库及完整答案详解【历年真题】
- 2024年电梯考试过关检测试卷含完整答案详解【名校卷】
- 2025计算机一级考试黑钻押题及一套答案详解
- 2024年安全员考试模拟题库及参考答案详解【B卷】
- DL∕ T 1195-2012 火电厂高压变频器运行与维护规范
- 学前儿童英语教育与活动指导(学前教育专业)全套教学课件
- 肿瘤疗效评估新标准mRECIST标准
- 网络热梗是否融入现实生活
- 乐乐课堂版奥数三年级
- 口腔疾病的预防与治疗措施
- 汽车机械基础 课件 绪论
- 客车检车员-中国铁路兰州局集团有限公司编
- 胖东来收银管理制度
- 中医护理操作并发症预防及处理
- 《混凝土结构耐久性电化学修复技术规程》
评论
0/150
提交评论