收藏 分销(赏)

试验6-多态和虚函数、运算符重载.doc

上传人:w****g 文档编号:2711096 上传时间:2024-06-04 格式:DOC 页数:5 大小:26.04KB
下载 相关 举报
试验6-多态和虚函数、运算符重载.doc_第1页
第1页 / 共5页
试验6-多态和虚函数、运算符重载.doc_第2页
第2页 / 共5页
试验6-多态和虚函数、运算符重载.doc_第3页
第3页 / 共5页
试验6-多态和虚函数、运算符重载.doc_第4页
第4页 / 共5页
试验6-多态和虚函数、运算符重载.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、(完整版)试验6 多态和虚函数、运算符重载试验内容(1)程序Ex_Shape:定义一个抽象类Cshape,包含纯虚数函数Area(用于计算面积)和SetData(用于重设形状大小),然后派生出三角形Ctriangle类,矩形Crect类、园Ccircle类,分别求其面积.最后定义一个Carea类,计算这几个形状的面积之和,各形状的数据通过Carea类构造函数或成员函数来设置,编写一个完整的程序。(2)程序Ex_Complex;定义一个复数类Ccomplex,通过重载运算符“*”和“/”,直接实现两个复数之间的乘除运算。运算符“”用成员函数实现重载,而运算符“/”用友元函数实现重载。编写一个完整

2、的程序(包括测试运算符的程序部分)。提示:两复数相乘的计算公式为:(a+bi)*(c+di)=(ac-bd)+(ad+bc)i ,而两复数相除的计算公式为: (a+bi)/(c+di)=(ac+bd)/(cc+d*d)+(bcad)/ (c*c+dd)i。实验准备和说明(1)在学习完第2章的“运算符重载”内容之后进行本次实验。(2)编写本次上机所需要的程序.实验步骤1。创建工作文件夹打开计算机,在“D:Visual C+程序 LiMing”文件夹中创建一个新的子文件夹”实验6“。 2.输入并运算程序Ex_Shape.cpp输入并运算程序Ex_Shape。cpp的具体步骤如下。(1)启动Visu

3、alC+6。0.(2)单击标准工具栏上的“”按钮,在新打开的文档窗口中输入下列程序代码:#includeiostream.hClass 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(fl

4、oat)(H*W0.5); void SetData(float f1, float f2) H=f1; W=f2; private:floatH,W;Class Crect :publicCShapepublic: Crect(float h=0, float w=0) H=h; W=w; float Area() /在派生类定义纯虚函数的具体实现代码 return(float)(HW); void SetData(float f1, float f2) H=f1; W=f2; private: float H,W;Class Ccircle: public Cshapepublic: Cc

5、ircle(float r=0) R=r;float Area() /在派生类定义纯虚函数的具体实现代码 return(float)(3。14159265R*R); void SetData(float r, float) /保持与纯虚函数一致 R=r;private: float R;;class CAreapublic: CArea(float triWidth,float triHeight,float rcHeidht,float r) ppShape=new Cshape*3; ppShape0= new CTriangle(triWidth,triHeight); ppShape1

6、= new CRect(Crect(rcWidth,rcHeight); ppShape2= new CCircle(r);CArea() for(inti=0;i2)(n0)return;ppShapen-SetData(f1,f2); void.CalAndPrint(void) 计算并输出 float fSnm=0。0;char*str3= “三角”,“矩,“圆” ;for(int i=0;iArea();通过基类指针,求不同形状的面积 coutstri“形面积是:“areaendl;fSum+=aera;count“总面积是”fSumendl;Private: CshapeppShap

7、e; 指向基类的指针数组void main()Carea a(10,20,6,8,6。5);a.CalAndprint();a.A。setshapedata(0,20,30);a。CalAndprint();a.SetShapeData(2,11);a.CalAndprint();a。setShapeData(1,2,5):a。CalAndprint();(3) 单击标准工具栏的Save按钮,弹出“保存为”文件对话框,将文件定位到“DVisualC+程序LiMing实验6”,文件名为Ex_shape.cpp。(4)编译运行,分析结果。试一试在上述程序的基础上,若还有一个正方形Csquare,则

8、这样的类应如何实现?整个程序应如何修改? 3.输入并运行程序Ex_Complex。cpp输入并运行程序Ex_Complex.cpp的具体步骤如下.(1)选择“文件”“关闭工作区”,关闭原来项目。(2)单击标准工具栏上的“New Text File”按钮,在新打开的文档窗口中述如下列程序代码:#includeiostream。hClass Ccomplex Public: Ccomplex(double r=0,double i=0) realpart=r; imagepart=i; Void print() cout该复数实数realpart,虚部imagepartendl; Ccomplex

9、 operator*(Ccomplex b); / 成员函数重载运算符 Friend CComplex operator/(CComplex &a,CComplex b); / 友元函数重载运算符/private: double realpart; /复数的实部 double imagepart; /复数的虚部;CComplex CComplex::operator *(CComplex &b) CComplex temp; temp。realPart=real.Partb。realPartimagePart*b.imagePart; temp.imagePart=realPart*b。ima

10、gePart+imagePart*b。realPart; return temp;CComplex operator/(CComplex a,CComplex &b) CComplex temp; double d=b。realPart*b.realPart+b.imagePartb.imagePart;temp。realPart=(a。realPartb.realPart+a.imagePart*b。imagePart)/d;temp.imagePart=(a。imagePart*b.realParta。realPart*b。imagePart)/d;return temp;void mai

11、n() CComplex c1(12,20),c2(50,70),c; c=c1。c2; c.print(); c=c1/c2; c。print();(3)单击标准工具栏的save按钮,弹出“保存为”文件对话框,将文件保存为Ex_Complex。cpp。(4)编译运行,分析结果.试一试 在上述程序的基础上,若还有复数和实数的乘除运算,则如何进行重载? 4。退出Visual C+ 6.0 5。写出实验报告结合上述分析和试一试内容,写出实验报告。思考与练习(1)在程序Ex_Shape中,若基类CShape中没有纯虚函数SetData(),则编译肯定会有错误,这是为什么?(2)用友元函数和成员函数进行运算符重载的区别是什么?

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服