没注释的源代码
#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 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 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);
cout<<"Circle area=";
printarea(c);
Rectangle r(4,5);
cout<<"Rectangle area=";
printarea(r);
Triangle t(4,5);
cout<<"Triangle area=";
printarea(t);
return 0;
}