多态和虚函数、运算符重载

多态和虚函数、运算符重载

ID:41726223

大小:47.14 KB

页数:6页

时间:2019-08-30

多态和虚函数、运算符重载_第1页
多态和虚函数、运算符重载_第2页
多态和虚函数、运算符重载_第3页
多态和虚函数、运算符重载_第4页
多态和虚函数、运算符重载_第5页
资源描述:

《多态和虚函数、运算符重载》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验六多态和虚函数、运算符重载2012/15学号1108324054姓名王迎博

2、]寸间2012/6/15专业网络工程班级2011级网络工程一、实验题目:形状类的设计与实现二、实验目的:(1)理解虚函数的特性。(2)理解纯虚函数和抽象类的特性。(3)掌握用虚函数实现运行时的多态的方法。三、实验内容:(1)程序Ex_Shape:定义一个抽象类CShape,包括纯虚函数Area(用于计算面积)和SetData(用于重设形状大小),然后派生岀三角形CTriangle类、矩形CRect类、圆CCircle类,分别求其面积.最后定义一个CArea类,计算这几个形状的面积之和,各形状的数据通过CArea

3、类构造或成员函数来设置,编写一个完整的程序。⑵程序Ex_Complex:定义一个复数类CComplex,通过重载运算符“*”和直接实现两个复数Z间的乘除运算。运算符““用成员函数实现重载,而运算符用友元函数实现重载。编写一个完整的程序(包括测试运算符的程序部分)。提示:两复数相乘的计算公式为:(a+bi)*(c+di)=(ac-bd)+ad+bc),而两复数相除的计算公式为:(a+bi)/(c+di)=(ac+bd)/(c*c+d*d)+(bc・ad)/(c*c+d*d)i。四、实验步骤:1、创建工作文件夹2、输入并运行Ex_Shape.cpp的具体步骤如下。(1)启动VirtualC++

4、6.0⑵单击标准工具栏上的“NewTextFile”按钮,在新打开的文档窗口屮输入下列程序代码:#includeclassCShape{public:virtualfloatArea()=0;〃将Area定义成纯虚函数virtualvoidSetData(floatfl,floatf2)二0;//将SetData定义成纯虚函数};classCTriangle:publicCShape{public:CTriangle(floath=0,floatw=0){H=h;W=w;}floatArea()〃在派生类定义纯虚函数的具体实现代码{returnCfloaOCH^W^

5、O.S);}voidSetData(floatfl,floatf2){H=fl;W=f2;}private:floatH,W;};classCRect:publicCShape{public:CRect(floath=0,floatw=0){H=h;W=w;}floatArea()〃在派牛类定义纯虚函数的具体实现代码{return(float)(H*W);}voidSetData(floatfl,floatf2){H=fl;W=f2;}private:floatH,W;};classCCircleipublicCShape{public:CCircle(floatr=0){R二「}floa

6、tArea()〃在派生类定义纯虚函数的具体实现代码{retum(float)(3」4159265*R*R);}voidSetData(floatr,float)//保持与虚函数一致{R=r;}private:floatR;};classCArea{public:CArea(floattriWidth,floattriHeight,floatreWidth,floatrcHeight,floatr){ppShape=newCShape*[3];ppShape[O]=newCTriangle(triWidth,triHeight);ppShape[l]=newCRect(rcWidth,rcH

7、eight);ppShape[2]=newCCircle(r);}~CArea(){for(inti二0;i<3;i++)deleteppShape[i];deleteflppShape;}voidSetShapeData(intn,floatfl,floatf2=0)〃n为0表示操作的是三角形,1表示矩形,2表示圆形{if((n>2)11(n<0))retum;ppShape[n]->SetData(fl,f2);}voidCalAndPrint(void)〃计算并输出{floatfSum=0.0;char*str[3]={H三角”,”矩T圆”};for(inti=0;i<3;i++){

8、floatarea=ppShape[i]->Area();〃通过基类指针,求不同形状的面积cout«str[i]«"形面积是:u«area«endl;fSum+=area;}cout«"总面积是:"«fSum«endl;}private:CShape**ppShape;〃指向基的指针数组};voidmain(){CAreaa(10,20,6,&6.5);a.CalAndPrint();a.SetShapeData(0,2

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。