继承和组合混搭下的构造和析构
- 调用原则
- 先构造父亲 在构造成员变量 最后构造自己
- 先析构自己 在析构成员变量 最后析构父亲
2.案例
class OBJ
{
public:
OBJ(int a, int b)
{
this->a = a; this->b = b;
cout << "obj构造函数" <<" a"<< a <<" b"<< b << endl;
}
~OBJ()
{
cout << "obj析构函数" << endl;
}
private:
int a; int b;
};
class Parent:public OBJ
{
public:
Parent(char *p) :OBJ(1,2)
{
this->p = p;
cout << "父类构造函数 " << p << endl;
}
~Parent()
{
cout << "父类析构函数" << endl;
}
protected:
char *p;
};
class Child :public Parent
{
public:
Child(char *p) :Parent(p), obj1(3, 4), obj2(5,6)
{
this->myp = p;
cout << "子类构造函数 " << myp << endl;
}
~Child()
{
cout << "子类析构函数" << endl;
}
protected:
char *myp;
OBJ obj1; OBJ obj2;
};
void playobj()
{
Child c1("测试");
}
void main()
{
playobj();
system("pause");
//输出:
/*
obj构造函数 a1 b2
父类构造函数 测试
obj构造函数 a3 b4
obj构造函数 a5 b6
子类构造函数 测试
子类析构函数
obj析构函数
obj析构函数
父类析构函数
obj析构函数
请按任意键继续. . .
*/
}