类需要一个虚析构函数吗?

来源:互联网 发布:网络教学的产生 编辑:程序博客网 时间:2024/05/21 10:01

绝不会用作基类的类是不需要虚析构函数的:任何虚函数只在继承的情况下才有用。

假设,你设计了一个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;}

在这样的时候,我们是需要一个虚析构函数。