【发布时间】:2011-04-15 16:00:07
【问题描述】:
我有一个模板列表说,
List<SuperClass*>* mList;
for(int i = 0;i < mList->ElementsCount();i++)
mList->DeleteElementAtIndex(i);
在 mList 中添加子类的对象。
从列表中删除对象时, 我是否需要将对象转换为相应的子类并调用delete方法?
【问题讨论】:
-
如果你用智能指针容器(如
std::vector<boost::shared_ptr<SuperClass> >)或专用指针容器(如boost::ptr_vector<SuperClass>)替换原生指针容器,你不必担心。 -
不过,请记住,它们也需要虚拟析构函数才能正常工作。
标签: c++ stl subclass destructor delete-operator