原则:先构造父类,再构造成员变量、最后构造自己
先析构自己,在析构成员变量、最后析构父类
#include<iostream> using namespace std; //继承与组合混搭情况下,构造和析构调用原则 // 原则: 先构造父类,再构造成员变量、最后构造自己 // 先析构自己,在析构成员变量、最后析构父类 class Object { public: Object(int a,int b) { this->a = a; this->b = b; cout<<"object构造函数调用"<<"a: "<<a<<"b: "<<b<<endl; } ~Object() { cout<<"object析构函数"<<endl; } protected: private: int a; int b; }; class Parent:public Object { public: Parent(char *p):Object(1,2) { this->p = p; cout<<p<<endl; cout<<"父类构造函数.."<<p<<endl; } ~Parent() { cout<<"父类析造函数"<<p<<endl; } void printP(int a,int b) { cout<<"我是爹"<<endl; } protected: char *p; private: }; class Child :public Parent { public: //变化的地方 Child(char *p) : Parent(p),obj1(3,4),obj2(5,6)//这是对象初始化列表 { this->myp = p; cout<<"子类构造函数"<<myp<<endl; } ~Child() { cout<<"子类析造函数"<<myp<<endl; } void printC() { cout<<"我是儿子"<<endl; } protected: char *myp; Object obj1; Object obj2; private: }; //搭建舞台 void Test() { Child c1("继承测试"); } int main() { Test(); system("pause"); return 0; }