虚析构函数的作用

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

猜你喜欢

热点阅读