c ++ class constructor sequential combination

#include <iostream>
#include <cmath>
using namespace std;
 
class Point{
    private:
        int x, y;
    
    public:
        Point(int a = 0, int b = 0)
        {
            x = a; y = b;
            cout << "Point construction: " << x << ", "<< y << endl;
        }
        Point(Point &p) // copy constructor,其实数据成员是int类型,默认也是一样的 
        {
            x = p.x;
            y = p.y;
            cout << "Point copy construction: " << x << ", "<< y << endl; 
        }
        int getX()
        {
            return x;
        }
        int getY()
        {
            return y;
        }
}; 
 
class Line{
    private:
        Point start, end;
    
    public:
        Line(Point pstart, Point pend)
                    :start(pstart), end(pend) // 组合类的构造函数对内前对象成员的初始化必须采用初始化列表形式
        {
            cout << "Line constructior " << endl;
        }
        float getDistance()
        {
            double x = double(end.getX()-start.getX());
            double y = double(end.getY()-start.getY());
            return (float)(sqrt)(x*x+y*y);
        }
};
 
int main()
{
    Point p1(10,20),p2(100,200);
    Line line(p1,p2);
    cout << "The distance is: "<<line.getDistance()<<endl; return 0;
}

Output:

Point construction: 10, 20
Point construction: 100, 200
Point copy construction: 100, 200
Point copy construction: 10, 20
Point copy construction: 10, 20
Point copy construction: 100, 200
Line constructior
The distance is: 201.246

Line line (p1, p2); this line of code to jump directly to the copy constructor vs below the point before entering the constructor initializer list of line and enter the copy constructor point again

Guess you like

Origin www.cnblogs.com/working-in-heart/p/12089233.html