//假设我有如下一个类
Class A{
public:
B* b; // B为一个类
}// 在函数中有如下定义
A* a = new A;
a->b = new B;//在析构时,要不要手动删除b?if (a->b != NULL)
{
delete a->b;
a->b = NULL;
}if (a != NULL)
{
delete a;
a = NULL;
}
现在的问题是:我在析构中删除a时, 需不需要再删除b?即删除a对象时,会不会自动把b对像申请的空间也delete了?
Class A{
public:
B* b; // B为一个类
}// 在函数中有如下定义
A* a = new A;
a->b = new B;//在析构时,要不要手动删除b?if (a->b != NULL)
{
delete a->b;
a->b = NULL;
}if (a != NULL)
{
delete a;
a = NULL;
}
现在的问题是:我在析构中删除a时, 需不需要再删除b?即删除a对象时,会不会自动把b对像申请的空间也delete了?
A在哪分配的空间 就在哪释放 关析构什么事
A* a = new A;
a->b = new B;你这样分配空间
就先delete B,再delete A