//继承中的构造与析构 #include<iostream> using namespace std; /* 继承中的构造析构调用原则 1.子类对象在创建时会首先调用父类的构造函数 2.父类构造函数执行结束后,执行子类的构造函数 3.当父类的构造函数有参数时,需要在子类的初始化列表中显示调用 4.析构函数调用的先后顺序与构造函数相反 继承与其他类做成员变量混搭的情况下,构造和析构调用原则 1.先构造父类,在构造成员变量,最后构造自己 2.先析构自己,再析构成员变量,最后析构父类 */ class PointA{ public: PointA(int a,int b){ x = a; y = b; } void PrintA(){ cout << "PointA:x=" << x << ";y=" << y << endl; } private: int x; int y; }; class PointC{ public: PointC(int a){ this->a = a; } void PrintS(){ cout << "PointC:a=" << a << endl; } private: int a; }; class PointB :public PointA{ public: //调用父类构造函数 调用成员属性的有参构造函数 PointB(int a, int b, int c) :PointA(a, b), ct(a) { this->c = c; } void Test1(){ this->ct.PrintS(); } private: int c; PointC ct; }; void ProtectA(){ PointB pb1(1,1,2); pb1.PrintA(); pb1.Test1(); } void main(){ ProtectA(); system("pause"); }