虚析构函数是为了避免内存泄露,为什么会有内存泄漏呢,我们先看下面的例子
class objectBase
{
public:
objectBase()
{
std::cout << "objectBase构造函数" << std::endl;
}
~objectBase()
{
std::cout << "objectBase析构函数" << std::endl;
}
};
class object:public objectBase
{
public:
object()
{
std::cout << "object构造函数" << std::endl;
a = new char;
}
~object()
{
std::cout << "object析构函数" << std::endl;
delete a;
}
char* a;
};
int main()
{
objectBase*a = new object;
delete a;
}
从输出看出子类里的对象a 根本没有释放内存,这就会造成内存泄漏,现在加上虚析构
加上虚析构后子类里的内存就能释放了