虚析构函数的作用

不要被这个名字吓住,其实他就是普通的析构函数变“虚”了,也就是增加了多态性。它的主要功能就是确保继承体系中的对象正确释放。例子:

class Base
{
public:
    virtual ~Base(){}
};
class Derived :public Base
{
    public:
        Derived()
        {
            pointer = new int[10];
        }
        ~Derived()
        {
            delete []pointer;
        }
        int *pointer;
};

void main()
{
    Derived *d = new Derived();
    Base *b = d;
    delete b;//此处如果没有虚析构函数,则只会调用基类的析构函数,那么派生类中分配的内存就没办法释放,造成泄露。所以,如果发生继承,一定要把基类析构函数定义为虚函数。
    
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容