若有派生类,基类中的析构函数不是虚函数,则派生类的析构函数不会执行
#include<iostream>
using namespace std;
class Base
{
public:
Base()
{
cout << "Base()" << endl;
}
virtual ~Base()
{
cout << "~Base()" << endl;
}
private:
int ma;
};
class Derive : public Base
{
public:
Derive() :Base()
{
cout << "Derive()" << endl;
}
~Derive()
{
cout << "~Derive()" << endl;
}
private:
int mb;
};
int main()
{
Base *p = new Derive;
delete p;
system("pause");
return 0;
}
执行结果:
如果去掉基类析构函数的virtual,则