#include <iostream>
#include <list>
using namespace std;
class object
{
// list<object*> child; //子组件链表
public:
list<object*> child; //子组件链表
object(object* parent = nullptr)
{
if(parent != nullptr)//说明创建对象时,给定了父组件,要将自己的地址存入父组件的孩子链表中
{
parent->child.push_back(this);
}
}
virtual ~object() //将所有的子组件释放
{
for(auto p=child.begin();p!=child.end();p++)
{
delete *p;
}
}
};
class A : public object
{
public:
A(object* parent = nullptr)
{
if(parent != nullptr)
{
parent->child.push_back(this);
}
cout<<"A::构造函数"<<endl;
}
~A()
{
cout<<"A::析构函数"<<endl;
}
};
class B : public object
{
public:
B(object* parent = nullptr)
{
if(parent != nullptr)
{
parent->child.push_back(this);
}
cout<<"B::构造函数"<<endl;
}
~B()
{
cout<<"B::析构函数"<<endl;
}
};
int main()
{
A w;
B *bin = new B(&w);
return 0;
}