#include <iostream>
struct A {
~A(){std::cout << "~A()/n";}
};
struct B: public A{
~B(){std::cout << "~B()/n";}
};
int main()
{
A *p = new B;
delete p;
}
如果 A的析构函数不是virtual的,那么此时就不是先调用B的析构函数再调用A的析构函数。
如果A 的析构函数为virtual,则先~B(),再~A()
目的
1、在技术上防止内存leak
2、做到完全free