假设我有这个:
void f(...)
{
.
.
std::list<X*> xList;
.
// Then i fill the list
std::list<X*>::iterator iter;
for (iter = xList.begin(); iter != xList.end(); ++iter)
{
*iter = new X();
}
}
当 xList 超出范围时,我知道容器应该调用列表中包含的对象的析构函数吗?首先,这是真的吗?
如果是这样,那么由于列表包含指向类 X 的指针,当 xList 超出范围时,不应该调用 X 的析构函数吗?从而释放 X 持有的任何内存?