比如
class t1 {int T1;};
class t2 :public t1 {int T2;};
signed main()
{
    A *a = new B();
    delete a;
    return 0;
}
这样的一份代码。
很明显会造成内存泄漏。
分析报错。
new-delete-type-mismatch
分配了8字节,结果只删除了4字节,明显的内存泄漏。
于是虚析构函数横空出世。
有了虚析构函数后,delete操作会正确识别类的真正类型,从而不会删除错误。