这个程序是书上例题,主要是辅助理解组合类
- #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,p2
- double 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;
- }