照着教材敲了一遍,采用单步跟踪的方式,查看程序的运行过程
#include <iostream>
#include <cmath>
using namespace std;
class 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 << "Callinbg the copy constructor of Point" << endl;
}
//类的组合
class Line {
public:
Line(Point xp1, Point xp2);
Line(Line &L);
double getLen() { return len; }
private:
Point p1, p2;
int len;
};
//组合类的构造函数
Line::Line(Point xp1, Point xp2) :p1(xp1), p2(xp2) {
cout << "Caling the 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);
Line line(myp1, myp2);
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;
return 0;
}
运行结果如下