- 两个派生类都有CalculateArea()函数计算几何图形的面积。
#include<iostream>
using namespace std;
const double pi = 3.14159;
class Shape
{
protected:
double a, b, s;
public:
Shape() { s = 0; }
Shape(double x = 0, double y = 0):a(x),b(y){}
double CalculateArea();
};
double Shape::CalculateArea()
{
if (b == 0)
s = pi * a * a;
else
s = a * b;
return s;
}
class Rectangle :public Shape
{
public:
Rectangle(double a=0,double b=0):Shape(a,b){}
};
class Circle :public Shape
{
public:
Circle(double r=0):Shape(r){}
};
void main()
{
double r, a, b;
cout << "请输入园的半径:r=";
cin >> r;
Circle R(r);
cout << "圆的面积是:" << R.CalculateArea() << endl;
cout << endl;
cout << "请输入矩形的长、宽:";
cin >> a>>b;
Rectangle C(a, b);
cout << "矩形的面积是:" << C.CalculateArea() << endl;
}