定义一个Shape抽象类,派生出Rectangle类和Circle类,计算各派生类对象的面积Area()。

定义一个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;
}