c++,抽象类,派生类

要求:
(1)已知Figure类为抽象类,包含两个protected的double类型变量 x与y;
(2)Square类与Circle类均从Figure类公有派生;
(3)计算中要用到π,取值3.14。
请根据运行结果与main函数将程序补充完整。

例1(只有第1行为输入):
2.2 3.3
weight:2.2,height:3.3
area=7.26
radius:2.2
area=15.1976

请注意,main()函数(或函数调用)必须按如下所示编写:
int main()
{
Figure *p;
double a,b;
cin>>a>>b;
Square s(a,b);
Circle c(a);
p=&s;
p->area(); //输出矩形的长、宽,计算面积并输出
p=&c;
p->area(); //输出圆的半径,计算面积并输出

return 0;

}


#include<iostream>
using namespace std;

#define PI 3.14
class Figure
{
public:
    virtual void area()
    {

    }
protected:
    double x;
    double y;
} ;
class Square:public Figure
{
public:
    Square(double _x,double _y)
    {
        x=_x;
        y=_y;
    }
    void area()
    {
        cout<<"weight:"<<x<<",height:"<<y<<endl;
        cout<<"area="<<x*y<<endl;
    }
};

class Circle:public Figure
{
public:
    Circle(double _x)
    {
        x=_x;
    }
    void area()
    {
        cout<<"weight:"<<x<<endl;
        cout<<"area="<<x*x*PI<<endl;
    }
};
int main()
{
    Figure *p;
    double a,b;
    cin>>a>>b;
    Square s(a,b);
    Circle c(a);
    p=&s;
    p->area(); //输出矩形的长、宽,计算面积并输出
    p=&c;
    p->area(); //输出圆的半径,计算面积并输出

    return 0;
}

代码很简单,就是定义基类。然后在子类中输出各种不同的面积

#include"stdio.h"
#include"string.h"
#include <iostream>

using namespace std;

#define PI 3.14

class Figure
{
public:
    Figure() {};
    int m_x, m_y;
    virtual void  area() = 0;
};

class Square :public Figure
{
public:
    Square(int x, int y)
    {
        m_x = x;
        m_y = y;
    }
    void area()
    {
        cout << "area = " << m_x * m_y << endl;
    }
};

class Circle :public Figure
{
public:
    Circle(int radius)
    {
        m_x = radius;
    }
    void area()
    {
        cout << "area = " << PI*(m_x*m_x)<< endl;
    }
};


int main()
{
    
    Figure *p;
    double a, b;
    cin >> a >> b;
    Square s(a, b);
    Circle c(a);
    p = &s;
    p->area(); //输出矩形的长、宽,计算面积并输出
    p = &c;
    p->area(); //输出圆的半径,计算面积并输出

    return 0;

}

img