1. 程式人生 > >定義點類,並以點類為基類,派生出直線類,從基類中繼承的點的資訊表示直線的中點。

定義點類,並以點類為基類,派生出直線類,從基類中繼承的點的資訊表示直線的中點。

#include<iostream>
#include<cmath>
using namespace std;
class Point //定義座標點類
{
public:
    //定義必要的建構函式
    Point(double a=0,double b=0):x(a),y(b){}
    double  xreturn(){return x;}
    double  yreturn(){return y;}
    void PrintPoint() //輸出點的資訊
    {
    	cout<<"("<<x<<","<<y<<")"<<endl;
    }
private:
    double x,y;   //點的橫座標和縱座標
};
class Line: public Point   //利用座標點類定義直線類, 其基類的資料成員表示直線的中點
{
public:
    Line(Point M, Point N) //建構函式,使用已經初始化的兩個端點計算基類資料成員描述的中點
    {
    	pts=M;pte=N;
    }
    void PrintLine()  //輸出直線的兩個端點和直線長度
    {
    	cout<<"端點:"<<"("<<pts.xreturn()<<","<<pts.yreturn()<<")"<<endl;
    	cout<<"端點:"<<"("<<pte.xreturn()<<","<<pte.yreturn()<<")"<<endl;
    	double a=pts.xreturn()-pte.xreturn();
//    	cout<<"a="<<a<<endl;
    	double b=pts.yreturn()-pte.yreturn();
//    	cout<<"b="<<b<<endl;
    	cout<<"直線長度:"<<sqrt(a*a+b*b)<<endl;
    }
private:
    class Point pts, pte;   //直線的兩個端點
};
int main()
{
    Point ps(-2,5),pe(4,13);
    Line l(ps,pe);
    //下面輸出直線l的端點、長度和、中點的資訊
   l.PrintLine();

    return 0;
}