为啥矩形周长面积都出来的0,圆形部分都正常啊


#include;
using namespace std;
class  point {
private:
    //二维点的坐标分量  x  y
    float  _x = 0.0;
    float  _y = 0.0;
public:
    float x = _x;
    float y = _y;
};
class CShape
{
public:
    virtual ~CShape() {};
    virtual void AddData(float a) {}; //输入数据
    virtual void AddData(point a, point b) {}; //输入数据
    virtual float Perimeter() = 0;//求周长
    virtual float Area() = 0; //求面积
};

//园
class CC : public CShape
{
private:
    float m_radius;
public:
    CC() :
        m_radius(){}
    virtual ~CC() {};
    //输入数据
    virtual void AddData(float radius)
    {
        m_radius = radius;
    }
    //求周长
    virtual float Perimeter()
    {
        return 6.28 * m_radius;
    }
    //求面积
    virtual float Area()
    {
        return 3.14 * (m_radius * m_radius);
    }
};
//矩形
class CR : public CShape
{
public:
    point a;
    point b;
    float m1,m2;
    float n1,n2;
    float x;
    float y;
public:
    virtual ~CR() {};
    //输入数据
    virtual void AddData(point a, point b)
    {
        a.x = m1;
        a.y = n1;
        b.x = m2;
        b.y = n2;
    }
    //求周长
    virtual float Perimeter()
    {

        return 2*((b.x - a.x) + (a.y - b.y));
    }
    //求面积
    virtual float Area()
    {
        return (b.x - a.x) * (a.y - b.y);
    }
};
int main()
{
    point a;
    point b;
    float r;
    float m1,m2,n1,n2,m3,n3;
    cout << "【1】求圆的周长与面积" << endl;
    cout << "【2】求矩形的周长与面积" << endl;
    cout << "请选择" << endl;
    int n;
    cin >> n;
    if (n == 1)
    {
        cout << "请输入圆心坐标与半径" << endl;
        cin >> m3 >> n3;
        cin >> r;
        CShape* pCC = new CC();
        pCC->AddData(r);
        float ccArea = pCC->Area();
        float ccPerimeter = pCC->Perimeter();
        cout << "圆面积" << endl;
        cout << ccArea << endl;
        cout << "圆周长" << endl;
        cout << ccPerimeter << endl;
    }
    else if (n == 2)
    {
        cout << "请输入矩形左上角与右下角坐标" << endl;
        cin >> m1 >> n1;
        cin >> m2 >> n2;
        CShape* pCR = new CR();
        pCR->AddData(a, b);
        float crArea = pCR->Area();
        float crPerimeter = pCR->Perimeter();
        cout << "矩形面积" << endl;
        cout << crArea << endl;
        cout << "矩形周长" << endl;
        cout << crPerimeter << endl;
    }
    else
    {
        cout << "输入错误" << endl;
    }
    return 0;
}

img

img


virtual void AddData(point a, point b)
    {
        this->a = a;
        this->b = b;
    }