代码实现:
#include <iostream>
using namespace std;
class Shape
{
public:
virtual float Area(void) = 0;
virtual void SetData(float, float=0) = 0;
};
class Triangle:public Shape
{
float w, h;
public:
Triangle(float ww=0, float hh=0)
{
w = ww;
h = hh;
}
float Area(void)
{
return w*h/2;
}
void SetData(float ww, float hh=0)
{
w = ww;
h = hh;
}
};
class Rectangle:public Shape
{
float w, h;
public:
Rectangle(float ww=0, float hh=0)
{
w = ww;
h = hh;
}
float Area(void)
{
return w*h;
}
void SetData(float ww, float hh=0)
{
w = ww;
h = hh;
}
};
class Square:public Shape
{
float s;
public:
Square(float ss=0)
{
s = ss;
}
float Area(void)
{
return s*s;
}
void SetData(float, float ss=0)
{
s = ss;
}
};
class Circle:public Shape
{
float r;
public:
Circle(float rr=0)
{
r = rr;
}
float Area(void)
{
return 3.14*r*r;
}
void SetData(float, float rr=0)
{
r = rr;
}
};
float CalcArea(Shape *p)
{
return p->Area();
}
int main()
{
Triangle T;
T.SetData(2,2);
Rectangle R;
R.SetData(3,2);
Square S;
S.SetData(0,2);
Circle C;
C.SetData(0,2);
float sum=0;
sum += CalcArea(&T)+CalcArea(&R)+CalcArea(&S)+CalcArea(&C);
cout << "三角形面积:" << CalcArea(&T) << endl;
cout << "矩形面积:" << CalcArea(&R) << endl;
cout << "正方形面积:" << CalcArea(&S) << endl;
cout << "圆面积:" << CalcArea(&C) << endl;
cout << "总面积:" << sum << endl;
return 0;
}
运行结果: