从抽象基类Shape,派生出5个派生类:Circle(圆形),Square(正方形),Rectangle(矩形) ,Trapezoid(梯形),Triangle(三角形)。

#include<iostream>

#include<string>

using namespace std;

class Shape

{

       public:

              Shape(doublex=0,double y=0,double h=0);

              voidsetShape(double,double,double);

              virtualdouble area()const=0;

       protected:

              doublex,y,h;

};

Shape::Shape(double a,double b,double c)

{

       x=a;y=b;h=c;

}

void Shape::setShape(double a,doubleb,double c)

{

       x=a;y=b;h=c;

}

class Circle:public Shape

{

       public:

              Circle(doublea=0){x=a;};

              virtualdouble area()const

              {

                     return3.14159*x*x;

              };

      

};

class Square:public Shape

{

       public:

              Square(doublea=0){x=a;};

              virtualdouble area()const

              {

                     returnx*x;     

              };

};

class Rectangle:public Shape

{

       public:

              Rectangle(doublea=0,double b=0){x=a;y=b;};

              virtualdouble area()const

              {

                     returnx*y;

              };

};

class Trapezoid:public Shape

{

       public:

              Trapezoid(doublea=0,double b=0,double c=0){x=a;y=b;h=c;};

              virtualdouble area()const

              {

                     return(x+y)*h*0.5;

              };

};

class Triangle:public Shape

{

       public:

              Triangle(doublea=0,double b=0){x=a;y=b;};

              virtualdouble area()const

              {

                     returnx*y*0.5;

              };

};

int main()

{

       Circlecircle(2);Square square(3);Rectangle rectangle(2,3);

       Trapezoidtrapezoid(2,3,1);Triangle triangle(3,4);

       Shape*pt[5]={&circle,&square,&rectangle,&trapezoid,&triangle};

       intsum=0;

       stringch[5]={"circle","square","rectangle","trapezoid","triangle"};

       for(inti=0;i<5;i++)

       {

              sum+=pt[i]->area();

              cout<<ch[i]<<"'sarea is "<<pt[i]->area();cout<<endl;

       }

       cout<<"Theall of areas are "<<sum;

       return0;

}


猜你喜欢

转载自blog.csdn.net/h471507602/article/details/80618857