若有派生类,则基类中的析构函数要用虚函数

若有派生类,基类中的析构函数不是虚函数,则派生类的析构函数不会执行

#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,则

111
原文地址:https://www.cnblogs.com/zwj-199306231519/p/9685076.html