资源描述:
《c++面向对象程序设计实验5》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验5运算符重载和多态性班级学号(最后两位)姓名成绩一、实验目的1.掌握川成员函数重载运算符的方法2.掌握用友元函数重载运算符的方法3.理解并学握利用虚函数实现动态多态性和编写通用程序的方法4.掌握纯虚函数和抽彖类的使用二、实验内容1.复数类加减法乘除运算(用成员函数定义运算符重载)。复数类的定义:classcomplex〃复数类声明{public:〃外部接口complex(doubler=().(),doublei=0.0)〃构造函数{real=r,imag=i;}complexoperator+(complexc2)
2、;〃运算符"+"重载成员函数complexoperator-(complexc2);〃运算符叮'垂载成员函数complexoperator^(complex);〃运算符”*"遠载成员函数complexoperator/(complex);〃运算符"/"重载成员两数complexoperator=(complexc2);//运算符"二"重载成员函数voiddisplay();〃输出复数private://私有数据成员doublereal;〃复数实部doubleimag;〃复数虚部};2.复数类比较运算(用友元函数定义运算重
3、载)。注意:1)复数类比较运算按复数的模比较两个复数的人小。2)复数札I等判断当两个复数的实部和虚部都札I等,两个复数才相等,否则不和等。类的定义classcomplex〃复数类声明{public:complcx(doublcr=0.0,doublei=0.0){real=r;imag=i;}〃构造函数friendintoperator>(complexc1,complexc2);〃运算符">"重载友元函数friendintoperator>=(complexcl,complexc2);〃运算符”>="重载友元函数fri
4、endintoperator<(complcxcl,complcxc2);//运算符"v"重载友元函数friendintoperator<=(complexcl,complexc2);//运算符"<="^载友元函数friendintoperator==(complexc1,complexc2);〃运算符"=="重载友元函数friendintoperator!=(complexcl,complexc2);〃运算符"!二"重载友元函数voiddisplay();〃显示复数的值〃私有数据成员private:doublereal
5、;doubleimag;};1.利用虚函数实现的多态性来求四种几何图形的面积之和。这四种几何图形是:三角形、矩形、正方形和圆。几何图形的类型可以通过构造函数或通过成员函数来设置。⑴分析计算这四种儿何图的而积公式分别是:三角形的边长为W,高为H吋,则三角形的面积为W*H/2;矩形的边长为W,宽为H时,则其面积为W*H;正方形的边长为S,则正方形的面积为S*S;圆的半径为R,其面积为3.1415926*R*R。为设置几何图形的数据并求出几何图形的而积,協要定义一个包含两个虚函数的类:classShape{public:vir
6、tualfloatArea(void)=0;//求面积virtualvoidSetdata(float,float=0)=0;〃设置图形数据};因面积的计算依赖于儿何图形,故在类中只能定义一个纯虚函数Area。同理,设置儿何图形数据的函数Setdata也只能定义为纯虚函数。把这个基类派牛•出其它儿何图形类。如派牛出的三角形类为:classTriangle:publicShape{floatW,H;〃三角形边长为W,高为Hpublic:Triangle⑴oatw=0,floath=0){W=w;H=h;)floatArea
7、(void){returnW*H/2;}voidSetdata(floatw,floath=0){W=w;H=h;}};参考程序:#includc#definePI3.1415926usingnamespacestd;classShape{public:virtualfloatArea(void)=0;virtualvoidshow(void)=0;};classTriangle:publicShape{floatW,H;public:Tricingle(floatw=0,floath=0){W=w;
8、〃纯虚函数,求面积〃纯虚函数,显示数据//三角形边长为W,高为HH=h;}floatArca(void){returnW*H/2;}voidshow(){cout«M三角形:”vv"边长:H«W«M高:”vvHvv“三角形面积:H«Area()«endl;}};classRcctanglcipublicShape