继承与多态的题 可以给点思路吗

img

img

第一个是题目要求
第二张图是已经给出的主函数
想了很久不是很有思路,希望可以给点提示什么的!


#include <iostream>
using namespace std;

class Base
{
public:
    Base(int x = 0, int y = 0) : x(x), y(y){};
    ~Base();
    void move()
    {
        cout << "将画笔移动到坐标(" << x << "," << y << "),";
    };
    virtual void draw();

private:
    int x, y;
};

class Point : public Base
{

public:
    Point(int x = 0, int y = 0) : Base(x, y){};
    ~Point();
    void draw()
    {
        move();
        cout << "画一个点。" << endl;
    };
};
class Circle : public Base
{
private:
    int r;

public:
    Circle(int x = 0, int y = 0, int r = 0) : Base(x, y), r(r){};
    ~Circle();
    void draw()
    {
        move();
        cout << "画一个半径为" << r << "的圆。" << endl;
    };
};
class Line : public Base
{
private:
    int x2, y2, l;

public:
    Line(int x1 = 0, int y1 = 0, int x2 = 0, int y2 = 0) : Base(x1, y1), x2(x2), y2(y2){};
    ~Line();
    void draw()
    {
        move();
        cout << "画一个坐标(" << x2 << "," << y2 << ")的直线。" << endl;
    };
};

class Graphic
{
public:
    Graphic(){};
    ~Graphic(){};
    void task(Base *basic)
    {
        res.push_back(basic);
    }

    void draw()
    {
        for (int i = 0; i < res.size(); ++i)
        {
            cout << "第" << i + 1 << "步:";
            res[i]->draw();
        }
    }

private:
    vector<Base *> res;
};

int main()
{
    Graphic g;
    g.task(new Point(3, 5));
    g.task(new Line(1, 2, 3, 5));
    g.task(new Circle(3, 4, 5));
    g.task(new Line(8, 6, 21, 15));
    g.task(new Circle(8, 2, 3));
    g.task(new Point(6, 9));
    cout << "绘图步骤:" << endl;
    g.draw();

    return 0;
}