#include <iostream>
using namespace std;
class Base
{
public:
Base()
{
cout << "Base()" << endl;
}
virtual ~Base()
{
cout << "~Base()" << endl;
}
};
class Children : public Base
{
public:
Children()
{
cout << "Children()" << endl;
}
~Children()
{
cout << "~Children()" << endl;
}
};
int main()
{
Base* p = new Children;
delete p;
return 0;
}
如果父类的析构函数不是虚函数,只析构了父类对象
虚函数表指针的作用发挥了,delete p时,调用析构函数,发现析构函数是虚函数,查看虚函数表指针指向的虚函数表中记录的函数地址,调用相应的函数。