定义一个Shape抽象类,派生出Rectangle类和Circle类,计算各派生类对象的面积Area()。
参考,
#define _USE_MATH_DEFINES
#include <math.h>
#include <iostream>
using namespace std;
class Shape
{
public:
virtual double Area() const = 0; // pure virtual function => Shape 为抽象类
};
class Rectangle : public Shape
{
public:
Rectangle(double length, double width) : length(length), width(width) { }
double Area() const override
{
return length * width;
}
private:
double length;
double width;
};
class Circle : public Shape
{
public:
Circle(double r) : r(r) { }
double Area() const override
{
return M_PI * r * r;
}
private:
double r;
};
// 客户端测试代码
int main()
{
Shape* pr = new Rectangle(2, 4);
Shape* pc = new Circle(2);
cout << "矩形的面积是" << pr->Area() << endl;
cout << "圆形的面积是" << pc->Area() << endl;
delete pc;
delete pr;
return 0;
}