虚析构函数有关问题

虚析构函数问题
问题是这样的:
比如我现在有一个类
class a {
public:
a()
~a()
private:
int num1;
};

class b : public a {
public:
b();
~b();
private:
int num2;
};

int main(){
a *p = new b;
delete p;
}
我想知道的是,我知道a类的析构函数需要声明成虚析构。但是a中的num1成员变量要怎么删除。我既然声明了,那合成的构造函数系统是不是就不会生成了?那我是不是需要自己手动删除这个num1成员变量。要怎么删除呢。
谢谢
------解决思路----------------------
你不需要手动“删除” num1 。

num1 是 a 的一部分,会随着 a 一起被“删除”
------解决思路----------------------
virtual ~a();
------解决思路----------------------
引用:
就是说我说明了virtual ~a();后, 不用手动自己去定义它,它会自动进行删除吗


使用了virtual ~a();后,类b中的~b();也是虚函数了;

这是良好的习惯;

另外:类a中的num1不需要手动删除,因为num1是存储在栈上的,当类a对象的生命周期结束后,num1的内存被回收,所以不需要手动释放
------解决思路----------------------
类(对象)中的非静态成员变量
是存在 类对象 内部的,
对象 在哪,在哪