求线段长

来源:互联网 发布:巨人网络借壳上市猜测 编辑:程序博客网 时间:2024/06/06 00:51

这个程序是书上例题,主要是辅助理解组合类

#include <iostream>#include <cmath>using namespace std;class Point  //定义Point类{public:Point(int xx= 0, int yy = 0){x = xx;y = yy;}Point(Point &p);int getx() {return x;}int gety(){return y;}private:int x,y;};Point::Point(Point &p)//复制构造函数实现{x = p.x;y = p.y;cout<<"calling the copy constructor of point"<<endl;}//类的组合class Line//line类的定义{public://外部接口Line(Point xp1,Point xp2);Line(Line &l);double getLen(){return len;}private://私有数据成员Point p1,p2;//Point类的对象p1,p2double len;};//组合类的构造函数Line::Line(Point xp1,Point xp2):p1(xp1),p2(xp2){cout<<"calling constructor of line"<<endl;double x = static_cast<double>(p1.getx() - p2.getx());double y = static_cast<double>(p1.gety() - p2.gety());len = sqrt(x*x + y*y);}//组合类的复制构造函数Line::Line(Line &l):p1(l.p1),p2(l.p2){cout<<"calling the copy constructor of line"<<endl;len = l.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<<line.getLen()<<endl;return 0;    return 0;}

0 0
原创粉丝点击