美文网首页
虚析构函数的作用

虚析构函数的作用

作者: 沧海梦帆 | 来源:发表于2017-08-11 19:09 被阅读0次

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

    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;//此处如果没有虚析构函数,则只会调用基类的析构函数,那么派生类中分配的内存就没办法释放,造成泄露。所以,如果发生继承,一定要把基类析构函数定义为虚函数。
        
    }
    

    相关文章

      网友评论

          本文标题:虚析构函数的作用

          本文链接:https://www.haomeiwen.com/subject/upmtrxtx.html