【发布时间】:2009-06-17 19:40:55
【问题描述】:
我使用的是 borland 2006 c++,并且有以下代码。我正在使用向量,但无法理解为什么不调用析构函数。
基本上我有一个A类
class A
{
private:
TObjectList* list;
int myid;
public:
__fastcall A(int);
__fastcall ~A();
};
__fastcall A::A(int num)
{
myid = num;
list = new TObjectList();
}
__fastcall A::~A()
{
delete list;
}
int main(int argc, char* argv[])
{
myfunc();
return 0;
}
void myfunc()
{
vector<A*> vec;
vec.push_back(new A(1));
vec.push_back(new A(2));
}
根据我的阅读,当变量 vec 超出 myfunc() 的范围时,它应该破坏其包含的元素,因此应该调用 A 的析构函数。我在 ~A() 有一个断点,但从未被调用,我尝试过 resize(),也有擦除方法
TIA
【问题讨论】:
标签: c++