没注释的源代码
#include <iostream>
using namespace std;
class Shape
{
public:
virtual double area() const=0;
};
class Circle :public Shape
{
public:
Circle(double r):radius(r){}
virtual double area() const {return 3.14*radius*radius;}
protected:
double radius;
};
class Square :public Shape
{
public:
Square(double s):side(s){}
virtual double area() const {return 3.14*side*side;}
protected:
double side;
};
class Rectangle :public Shape
{
public:
Rectangle(double w,double h):width(w),height(h){}
virtual double area() const {return width*height;}
protected:
double width,height;
};
class Trapezoid :public Shape
{
public:
Trapezoid(double a,double b,double h):a(a),b(b),height(h){}
virtual double area() const {return 0.5*(a+b)*height;}
protected:
double a,b,height;
};
class Triangle :public Shape
{
public:
Triangle(double a,double h):a(a),height(h){}
virtual double area() const {return 0.5*a*height;}
protected:
double a,height;
};
void printarea(const Shape &s)
{
cout<<s.area()<<endl;
}
int main()
{
Circle c(3.6);
Square s(5);
Rectangle r(4,5);
Trapezoid t1(2,3,4.8);
Triangle t2(4,5);
Shape *p[5]={&c,&s,&r,&t1,&t2};
double area=0.0;
for(int i=0;i<5;i++)
{
area+=p[i]->area();
}
cout<<"all areas sum:"<<area<<endl;
return 0;
}