资源描述:
《西华大学c实验报告5多态和虚函数运算符重载》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、西华大学实验报告(计算机类)开课学院及实验室:机械工程与自动化实验时间:年月日学生姓名学号成绩学生所在学院机械工程与自动化年级传业/班2011级机电班课程名称高级语言在测控中的应用课程代码6003559实验项目名称多态和虚函数、运算符重载项目代码指导教师项目学分一、实验目的1.理解虚函数的特性;2.理解纯虚函数和抽象类的特性;3.掌握用虚函数实现运行时的多态性和编写通用程序的方法;4.掌握用成员函数和友元函数重修运算符的方法。二、内容与设计思想上机实践内容:1.定义一个抽象类CShape,包含纯虚函数Area()(原来计算面积)和SetData()(原来重设形状大小)。然后派生出三角形CT
2、riangle类、矩形CRect类、圆CCircle类,分别求其面积。最后定义一个CArea类,计算这儿个形状的面积之和,个形状的数据通过CArea类构造函数或成员函数来设置。编程一个完整的程序。2.定义一个复数类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)
3、i三、使用环境操作系统:WindownsXPC++环境:VisualC++6.0四、核心代码及调试过程#includeusingnamespacestd;classCShape{public:virtualfloatAreaO=0;virtualvoidSctData(floatfl,floatf2)=0;};classCTriangleipublicCShape{public:CTriangle(floath=0,floatw=0){H=h;W=w;}floatArea(){return(float)(H*W*0.5);}voidSctData(floatfl,flo
4、atf2){H=fl;W=f2;}privatc:floatH,W;};classCRcct:publicCShape{public:CRect(floath=0,floatw=0){II=h;W=w;floatAreaOreturn(float)(H*W);voidSetData(floatfl,floatf2)H=fl;W=f2;}private:floatH,W;};classCCircle:publicCShape{public:CCirclc(floatr=0){R=r;}floatArea()CN・C:Windowssystem32cmd.exe为:••为・•・•为:••
5、为::续需为需为需为需为继面囂・•面囂・•面囂・•面囂••键的面面面面面面面面为意番的积番的积番的积番的餐角形形面角形形面角形形面角形形黑三矩圆忌三矩圆忌三矩圆忌三矩圆忌请::L8?・54295・0332324・533:187・54295・0332324・533:187・542452.389681.889:187・512452.389651.889r)return(float)(3.14159265*R*R);}voidSetData(floatr,float){R=r;}private:floatR;};classCArea{public:CArea(floattriWidth,floa
6、ttrilleight,floatreWidth,floatrcllcight,floeitppShape=ncwCShape*[3];ppShapc[O]=ncwCTrianglc(triWidth,trillcight);ppShape[l]=ncwCRect(reWidth,reHeight);ppShape[2]=ncwCCirclc(r);}^CArea(){for(inti二0;i〈3;i++)deletcppShape[i];delete[]ppShape;}voidSetShapcData(intn,floatfl,floatf2=0){if((n>2)
7、
8、(n<0))re
9、turn;ppShape[n]->SctData(f1,f2);}voidCalAndPrint(void){floatfSum=0.0;char*str[3]二{〃三角〃,〃矩〃,〃圆行;for(inti二0;i〈3;i++){floatarca=ppShapc[i]->Arca();cout«str[i]«,z形的面积为:t/z«area«endl;fSum+=arca;}cout<<,z总而积为:t,,<