5.定义一个表示点的结构类型Point和一个由直线方程 确定的直线类Line.结构类型Point由x和y两个成员,他们分别表示点的横坐标和纵坐标.Line类有两个数据成员a和b,它们分别表示直线方程中的系

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 18:43:08
5.定义一个表示点的结构类型Point和一个由直线方程 确定的直线类Line.结构类型Point由x和y两个成员,他们分别表示点的横坐标和纵坐标.Line类有两个数据成员a和b,它们分别表示直线方程中的系

5.定义一个表示点的结构类型Point和一个由直线方程 确定的直线类Line.结构类型Point由x和y两个成员,他们分别表示点的横坐标和纵坐标.Line类有两个数据成员a和b,它们分别表示直线方程中的系
5.定义一个表示点的结构类型Point和一个由直线方程 确定的直线类Line.结构类型Point由x和y两个成员,他
们分别表示点的横坐标和纵坐标.
Line类有两个数据成员a和b,它们分别表示直线方程中的系数a和b.Line类有一个成员函数print用于显示直线方程;友元函数SetPoint(Line &L1,Line &L2)用于求两条直线的交点.
在main函数中,建立两个直线对象,分别调用print函数显示两条直线的方程,并调用函数SetPoint求这两条直线的交点.

5.定义一个表示点的结构类型Point和一个由直线方程 确定的直线类Line.结构类型Point由x和y两个成员,他们分别表示点的横坐标和纵坐标.Line类有两个数据成员a和b,它们分别表示直线方程中的系
#include <iostream>
#include <cmath>
using namespace std;
class Point //Point类声明
{
public:
Point(int xx=0,int yy=0)
Point(Point &p);
int GetX()
int GetY()
private:
int X,Y;
};
Point::Point(Point &p) //拷贝构造函数的实现
{
X=p.X;
Y=p.Y;
cout<<"Point拷贝构造函数被调用"<<endl;
}
//类的组合
class Line //Line类的声明
{
public://外部接口
Line (Point xp1,Point xp2);
Line (Line &);
double GetLen()
private://私有数据成员
Point p1,p2; //Point类的对象p1,p2
double len;
};
//组合类的构造函数
Line::Line (Point xp1,Point xp2)
:p1(xp1),p2(xp2)
{
cout<<"Line构造函数被调用"<<endl;
double x=double(p1.GetX()-p2.GetX());
double y=double(p1.GetY()-p2.GetY());
len=sqrt(x*x+y*y);
}
//组合类的拷贝构造函数
Line::Line (Line &Seg):p1(Seg.p1),p2(Seg.p2)
{
cout<<"Line拷贝构造函数被调用"<<endl;
len=Seg.len;
}
//主函数
int main()
{
Point myp1(1,1),myp2(4,5); //建立Point类的对象
Line line(myp1,myp2); //建立Line类的对象
Line line2(line); //利用拷贝构造函数建立一个新对象
cout<<"The length of the line is:";
cout<<line.GetLen()<<endl;
cout<<"The length of the line2 is:";
cout<<line2.GetLen()<<endl;
}