C++的实验问解SOS

定义点CPoint类作为基类,在此基础上派生出直线CLine类和圆CCircle类,并要求基类和各派生类具有以下特点:a.CLine类含有计算直线长度和斜率的成员函数;b.CCircle类含有计算圆面积的成员函数。设计一主函数来测试以上类的用法。

直线长度就是两点x和y坐标差值的平方和开根号,斜率就是y的差除以x的差

//定义点CPoint类作为基类,在此基础上派生出直线CLine类和圆CCircle类,并要求基类和各派生类具有以下特点:a.CLine类含有计算直线长度和斜率的成员函数;b.CCircle类含有计算圆面积的成员函数。设计一主函数来测试以上类的用法。
#include <iostream>
#include <math.h>
using namespace std;
class CPoint
{
    private:
          int x,y;
    public:
         CPoint() {}
         CPoint(int x,int y) {this->x = x;this->y=y;}
         int getX() {return x;}
         int getY() {return y;}
};
class CLine : public CPoint
{
    private:
        CPoint pt;
    public:
        CLine() {}
        CLine(int x1,int y1,int x2,int y2) : CPoint(x1,y1),pt(x2,y2) {}
        float getDis() {return sqrt((getX() - pt.getX())*(getX()-pt.getX())*1.0 + (getY()-pt.getY())*(getY()-pt.getY()));}
        float getK() {if(getX() == pt.getX()) return 0;return (getY()-pt.getY())*1.0/(getX()-pt.getX());}
};
class CCircle:public CPoint
{
    private:
        float r;
    public:
        CCircle() {}
        CCircle(int x,int y,float r) : CPoint(x,y) {this->r = r;}
        float getArea() {return 3.1415926*r*r;}
};
 
int main()
{
    CLine line(1,1,10,20);
    cout<<line.getDis()<<" "<<line.getK()<<endl;
    CCircle circle(10,10,10);
    cout<<circle.getArea()<<endl;
    return 0;
}

请你写你的初始思路和代码。