实验五Shape虚基类一、、、实验环境Windows+VC++。三、实验内容及要求定义抽象基类Shape,有它派生出三个类:Circle、Rectangle、Triangle,用函数ShowArea分别显示各种图形的面积,最后还要显示所有的图形面积。要求用基类指针数组,使他的每一个元素指向一个派生类对象。四、实验步骤(1)定义一个虚基类Shape,在ShowArea函数声明前冠以virtual使其成为虚函数,并且能够在派生类中重定义。//形状类ShapeclassShape{public: virtualdoubleShowArea()const=0;};(2)定义三个派生类Circle、Rectangle、Triangle,并公有继承Shape基类。//圆形CircleclassCircle:publicShape{private: doubleradius;//半径public: Circle(doubler):radius(r){}//构造函数 doubleShowArea()const//求圆形面积的函数 { returnPI*radius*radius; }};//矩形类RectangleclassRectangle:publicShape{private:doubleheigth;//高 doublewidth;//宽public:Rectangle(doubleh,doublew):heigth(h),width(w){}//构造函数doubleShowArea()const//求矩形面积的函数 { returnheigth*width; }};//三角形类TriangleclassTriangle:publicShape{private:doublea,b,c;//三角形三条边 public:Triangle(doublex,doubley,doublez):a(x),b(y),c(z){}//构造函数doubleShowArea()const//求三角形面积函数 { intp=(a+b+c)/2; returnsqrt(p*(p-a)*(p-b)*(p-c)); }}(3)在主函数中分别调用三个派生类的ShowArea函数,求出各个形状的面积。intmain(){ CircleA(); cout<<"圆形面积y:"<<()<<endl;//输出圆形面积 cout<<endl; RectangleB(3,4); cout<<"矩形面积y:"<<()<<endl;//输出矩形面积 cout<<endl; TriangleC(5,3,4); cout<<"三角形面积y:"<<()<<endl;//输出三角形面积(4)定义一个基类指针数组p[3]={&A,&B,&C},通过->访问派生类对象的成员函数ShowArea,如p[0]->ShowArea()访问的是对象A的成员函数。doublearea=;Shape*p[3]={&A,&B,&C};//基类指针数组for(inti=0;i<3;i++){area=area+p[i]->ShowArea();//面积相加}cout<<"总面积y:"<<
C 实验报告(虚基类)分析 来自淘豆网m.daumloan.com转载请标明出处.