C++之纯虚函数与抽象类

#include <iostream>


using namespace std;


class Shape
{
public:
virtual double area() const=0;

};


class Circle:public Shape //圆形 
{
public:
Circle(double r):radius(r){}
double area() const
{
return 3.1415926*radius*radius;
}

private:
double radius;
};


class Square:public Shape //正方形 
{
public:
Square(double s):side(s){}
double area() const
{
return side*side;
}

private:
double side;
};


class Rectangle:public Shape //矩形 
{
public:
Rectangle(double len,double w):length(len),width(w){}
double area() const
{
return length*width;
}

private:
double length;
double width;
};


class Trapezoid:public Shape //梯形 
{
public:
Trapezoid(double t,double b,double h):top(t),bottom(b),height(h){}
double area() const
{
return (top+bottom)*height*0.5;
}

private:
double top;
double bottom;
double height;
};


class Triangle:public Shape //三角形 
{
public:
Triangle(double b,double h):bottom(b),height(h){}
double area() const
{
return bottom*height*0.5;
}

private:
double bottom;
double height;
};


int main()
{

Circle circle(3.5);
Square square(5.5);
Rectangle rectangle(3,5);
Trapezoid trapezoid(1,2,3);
Triangle triangle(1,2);
Shape *pt[5]={&circle,&square,&rectangle,&trapezoid,&triangle};
cout<<"Circle area="<<pt[0]->area()<<endl;
cout<<"Square area="<<pt[1]->area()<<endl;
cout<<"Rectangle area="<<pt[2]->area()<<endl;
cout<<"Trapezoid area="<<pt[3]->area()<<endl;
cout<<"Triangle area="<<pt[4]->area()<<endl;

double sum=0;
for(int i=0;i<5;i++)
{
sum+=pt[i]->area();
}
cout<<"SumArea="<<sum<<endl;

return 0;
}

猜你喜欢

转载自blog.csdn.net/wrc_nb/article/details/80618305