C++const 引用问题,继承问题求解,新手
/*****************
*坐标类:Point
*****************/
#ifndef POINT_H
#define POINT_H
class Point{
public:
Point(){}
Point(const double& X,const double& Y):x(X),y(Y){}
Point(const Point&){}
Point& operator =(const Point&){}
~Point(){}
double get_X() const {return x;}
double get_Y() const {return y;}
private:
double x,y;
};
#endif//POINT_H
/*****************
*直线类:Line
*****************/
#include<iostream>
#include"Point.h"
#include<cmath>
#ifndef LINE_H
#define LINE_H
class Line{
public:
Line(){}
Line(const Point& po_1,const Point& po_2):point_1(po_1),point_2(po_2)
{
init();
}//初始化函数
Line(const Line&){}
Line& operator =(const Line&){}
~Line(){}
void init()
{
length = sqrt(pow(point_1.get_X()-point_2.get_X(),2)+
pow(point_1.get_Y()-point_2.get_Y(),2));
angle = atan((point_2.get_Y()-point_1.get_Y())/(point_2.get_X()-point_1.get_X()));
angle = angle*180/3.141592653; //弧度转换成角度。
}
void print_Line_Point_XY() const
{
std::cout<<"线段的两个端点的坐标分别是:"<<std::endl;
std::cout<<"("<<point_1.get_X()<<","<<point_1.get_Y()<<")"<<" "
<<"("<<point_2.get_X()<<","<<point_2.get_Y()<<")"<<std::endl;
}
void print_Length() const
{
std::cout<<"线段的长度是 "<<length<<std::endl;
}
void print_Angle() const
{
std::cout<<"线段与X轴的夹角是 "<<angle<<std::endl;
}
private:
Point point_1,point_2;
double length, angle;
};
#endif//LINE_H
/******************************************
*Rectangle 类 继承自 Line
*版本:2013-08-28-V1.0 编写人:zhengkailun
******************************************/
#include"Line.h"
#include"Point.h"
#ifndef RECTANGLE_H
#define RECTANGLE_H
class Rectangle : public Line{
public:
Rectangle(){}
Rectangle(const Rectangle&){}
Rectangle& operator =(const Rectangle&){}
~Rectangle(){delete line; }
Rectangle(const Point& pa,const Point& pb,const Point& pc,const Point& pd):Line(pa,pb)
{
line = new Line(pc,pd);
}
void print_Rectangle_Point() const
{
Line::print_Line_Point_XY();
line->print_Line_Point_XY();
}
private:
Line *line;
};
#endif//RECTANGLE_H
/******************************************
*Rectangle 测试程序
*版本:2013-08-28-V1.0 编写人:zhengkailun
******************************************/
#include<iostream>
#include"Point.h"
#include"Rectangle.h"
int main()
{
Point pa(1,1),pb(1,3),pc(3,1),pd(3,3);
//std::cout<<pa.get_X()<<std::endl;
Rectangle rect(pa,pb,pc,pd);
rect.print_Rectangle_Point();
rect.print_Angle();
rect.print_Length();
return 0;
}
