预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(完整版)试验6多态和虚函数、运算符重载(完整版)试验6多态和虚函数、运算符重载(完整版)试验6多态和虚函数、运算符重载试验内容(1)程序Ex_Shape:定义一个抽象类Cshape,包含纯虚数函数Area(用于计算面积)和SetData(用于重设形状大小),然后派生出三角形Ctriangle类,矩形Crect类、园Ccircle类,分别求其面积.最后定义一个Carea类,计算这几个形状的面积之和,各形状的数据通过Carea类构造函数或成员函数来设置,编写一个完整的程序。(2)程序Ex_Complex;定义一个复数类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)在学习完第2章的“运算符重载”内容之后进行本次实验。(2)编写本次上机所需要的程序.实验步骤1。创建工作文件夹打开计算机,在“D:\VisualC++程序\LiMing”文件夹中创建一个新的子文件夹”实验6“。2.输入并运算程序Ex_Shape.cpp输入并运算程序Ex_Shape。cpp的具体步骤如下。(1)启动VisualC++6。0.(2)单击标准工具栏上的“”按钮,在新打开的文档窗口中输入下列程序代码:#include〈iostream.h>ClassCshape{public:virtualfloatArea()=0;//将Area定义成纯虚函数virtualvoidSetData(floatf1,floatf2)=0;//将SetData定义成纯虚函数};classCtriangle:publicCshape{public:Ctriangle(floath=0,floatw=0){H=h;W=w;}floatArea()//在派生类定义纯虚函数的具体实现代码{return(float)(H*W*0.5);}voidSetData(floatf1,floatf2){H=f1;W=f2;}private:floatH,W;};ClassCrect:publicCShape{public:Crect(floath=0,floatw=0){H=h;W=w;}floatArea()//在派生类定义纯虚函数的具体实现代码{return(float)(H*W);}voidSetData(floatf1,floatf2){H=f1;W=f2;}private:floatH,W;};ClassCcircle:publicCshape{public:Ccircle(floatr=0){R=r;}floatArea()//在派生类定义纯虚函数的具体实现代码{return(float)(3。14159265*R*R);}voidSetData(floatr,float)//保持与纯虚函数一致{R=r;}private:floatR;};classCArea{public:CArea(floattriWidth,floattriHeight,floatrcHeidht,floatr){ppShape=newCshape*[3];ppShape[0]=newCTriangle(triWidth,triHeight);ppShape[1]=newCRect(Crect(rcWidth,rcHeight);ppShape[2]=newCCircle(r);}~CArea(){for(inti=0;i<3;i++)deleteppShape[i];delete[]ppShape;}voidSetShapeData(intn,floatf1,floatf2=0)∥n为0表示操作的是三角形,1表示矩形,2表示圆形{if((n>2)‖(n<0)return;ppShape[n]-〉SetData(f1,f2);}void.CalAndPrint(void)∥计算并输出{floatfSnm=0。0;char*str[3]={“三角”,“矩",“圆”};for(inti=0;i<3;i++){floatarea=ppShape[i]—>Area();∥通过基类指针,求不同形状的面积cout<〈str[i]<<“形面积是:“〈〈area〈<endl;fSum+=aera;}count〈<“总面积是”〈〈fSum〈〈endl;}Private:Cshape**ppShape;∥指向基类的指针数组}voidmain(){Car