问一个关于STL的问题
在STL中
class A
{
public:
A(){cout<<"constrcut A"<<endl;}
virtual ~A(){cout<<"destrcut A"<<endl;}
};
class B
{
public:
B(){cout<<"constrcut B"<<endl;}
virtual ~B(){cout<<"destrcut B"<<endl;}
list<A*> la;
};
main()
{
B* b = new B;
for(int i=0;i<10;i++)
{
A* a=new A;
b->la.push_back(a);
}
delete b; //在这里,会不会把push到la中的A*指针全部delete,是否 会产生内存泄漏?
//如果不是,是否需要在B的析构函数中来调用la.clear() 或者
//la.erase(la.begin(),la.end())
//不过我这样试了一下,好想还是不会去调~A()
//请问这种情况应该如何处理?
}