组合类——概念
类中的成员是另一个类的对象
关键:
既要对本类中的基本类型成员数据初始化,也要对对象成员初始化
贴下代码,建议一步一步地调试,理解构造组合类对象时如何调用构造函数和复制构造函数
#include<iostream>
#include<cmath>
using namespace std;
class Point {
private:
int x, y;
public:
Point(int xx = 0, int yy = 0) {
x = xx;
y = yy;
cout << "正在调用构造函数..." << endl;
}
Point(const Point &p);
int getx() { return x; }
int gety() { return y; }
};
Point::Point(const Point &p) {
x = p.x;
y = p.y;
cout << "调用复制构造函数..." << endl;
}
class Line {
private:
Point p1, p2;
double len;
public:
Line(Point xp1, Point xp2) : p1(xp1), p2(xp2) {
double x = static_cast<double>(p1.getx() - p2.getx());
double y = static_cast<double>(p1.gety() - p2.gety());
len = sqrt(x * x + y * y);
cout << "正在调用构造函数..." << endl;
}
Line(const Line &l) :p1(l.p1), p2(l.p2) {
len = l.len;
cout << "调用复制构造函数..." << endl;
}
double getlen() { return len; }
};
int main()
{
Point p1(1, 1), p2(4, 5);
Line line(p1, p2);
Line line2(line);
cout << "The length of the line is: " << line.getlen() << endl;
cout << "The length of the line2 is: " << line2.getlen() << endl;
system("pause");
return 0;
}