绝不会用作基类的类是不需要虚析构函数的:任何虚函数只在继承的情况下才有用。
假设,你设计了一个A类,并且B是A的继承,你在使用的时候,你可能会将实际指向B类的指针指向基类A的指针,并且调用了delete函数。
代码如下:
#include<iostream>
using namespace std;
struct A{
string a;
virtual ~A()
//~A()
{
cout<<"~A()"<<endl;
}
};
struct B:A{
string b;
~B()
{
cout<<"~B()"<<endl;
}
};
int main()
{
A *a = new B;
delete a;
return 0;
}
在这样的时候,我们是需要一个虚析构函数。