点类派生直线类

来源:互联网 发布:云计算 科普 编辑:程序博客网 时间:2024/05/01 16:52
心得体会:Line的构造函数之前按题目 Line(Point pts, Point pte);起初写成这样Line::Line(Pointpts,Pointpte):Point((pts.getX()+pte.getX())/2(pts.getY()+pte.getY())/2){},还是对两个端点的初始化无从下手,因为Line的两个私有变量也是pts和pte,≡(▔﹏▔)≡这使我许久都没想出构造函数怎么写(T_T)。之后看了下答案,改成Line(Point pt1,Point pt2){pts=pt1,pye=pt2};想了一个下午,太伤心了。
#include <iostream>#include <cmath>using namespace std;class Point //点类{public:    Point():x(0),y(0){};    Point(double x0,double y0):x(x0),y(y0){};    double getX()    {        return x;    }    double getY()    {        return y;    }    void PrintPoint();//输出点的信息protected:    double x,y;//点的横纵坐标};void Point::PrintPoint(){    cout<<"Ponit:("<<x<<","<<y<<")"<<endl;}class Line:public Point //利用坐标点类定义直线类, 其基类的数据成员表示直线的中点{public:    Line(Point pts,Point pte);//构造函数,用初始化直线的两个端点及由基类数据成员描述的中点    double Length();//计算并返回直线的长度    void PrintLine();private:    class Point pts,pte;//直线的两个端点,从Point类继承的数据成员表示直线的中点};Line::Line(Point pt1,Point pt2):Point((pt1.getX()+pt2.getX())/2,(pt1.getY()+pt2.getY())/2){   pts=pt1;   pte=pt2;}double Line::Length(){    double n;    n=sqrt((pts.getX()-pte.getX())*(pts.getX()-pte.getX())+(pts.getY()-pte.getY())*(pts.getY()-pte.getY()));    return n;}void Line::PrintLine(){    cout<<"1st ";    pts.PrintPoint();    cout<<"2nd ";    pte.PrintPoint();    cout<<"The Length of Line:"<<Length()<<endl;}int main(){    Point ps(-2,5),pe(7,9);    Line l(ps,pe);    cout<<"About the Line: "<<endl;    l.PrintLine();//输出直线l的信息:两端点及长度    cout<<"The middle point of Line is: ";    l.PrintPoint();//输出直线l中点的信息    return 0;}
运行结果:
0 0
原创粉丝点击