总的来说,虚析构函数是为了避免内存泄露,而且是当子类中会有指针成员变量时才会使用的到。
也就是说虚析构函数使得,在删除指向子类对象的基类指针时可以调用子类的析构函数达到释放子类中堆内存的目的,从而防止内存泄露。
基类使用虚析构函数 --> 当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被使用。
所以,并不是要把所有类的析构函数都写成虚函数。因为当类里面有虚函数的时候,编译器会给类添加一个虚函数表,里面来存放虚函数指针,这样就会增加类的存储空间。所以,只有当一个类被用来作为基类的时候,才把析构函数写成虚函数。