继承与组合混搭情况下,构造和析构调用原则
原则:先构造父类,再构造成员变量、最后构造自己
先析构自己,在析构成员变量、最后析构父类
#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;
}