定义点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;
}
请你写你的初始思路和代码。