#include
#include
using namespace std;
class Shape //抽象基类 Shpae
{
public:
virtual double area()=0;
virtual void shapeName(){}
};
class Circle:public Shape //圆形 Circle
{
public:
//Circle();
Circle(double r){radius=r;}
void shapeName(){cout<<"Circle: ";}
double area(){return 3.14*radius*radius;}
private:
double radius;
};
class Rectangle:public Shape //矩形 Rectangle
{
public:
//Rectangle();
Rectangle(double a,double b){sidea=a;sideb=b; }
void shapeName(){cout<<"Rectangle: ";}
double area(){return sidea*sideb;}
private:
double sidea;
double sideb;
};
class Triangle:public Shape //Triangle(三角形)
{
public:
//Triangle();
Triangle(double a,double b,double c){sidea=a;sideb=b;sidec=c;}
void shapeName(){cout<<"Triangle: ";}
double area()
{
double s=(sidea+sideb+sidec)/2;
double m=s*(s-sidea)*(s-sideb)*(s-sidec);
return sqrt(m);
}
private:
double sidea;
double sideb;
double sidec;
};
int main()
{
Circle C1(5.58);
Rectangle R1(6.34,8.64);
Triangle T2(6.54,5.13,3.89);
Shape *pt[3];
pt[0]=&C1;
pt[0]->shapeName();
cout << pt[0]->area()<
pt[1]=&R1;
pt[1]->shapeName();
cout << pt[1]->area()<
pt[2]=&T2;
pt[2]->shapeName();
cout << pt[2]->area()<
float areaSum=0;
for(int i=0;i<3;i++)
{areaSum=areaSum+pt[i]->area();}
cout<<"areaSum: "<
return 0;
}