c++ 虚析构函数

#include <iostream>

using namespace std;

class base
{
    public:
    base()
    {


    }
    base(int _name)
    {
        name = _name;
        malloc_buf = NULL;
    }

    /*这里的父类虚析构函数,是让子类的析构函数也是虚函数。在动态绑定时将执行实际类型的析构函数,以保证执行适当的析构。
      一个场景是:父类的析构函数的虚析构,父类引用绑定子类对象或指针指向子类对象:如果delete该引用或指针,这个delete将执行子类的析构函数,
      当然它也必将调用父类的析构。但是它绝对不是只调用父类的析构函数

    */
    virtual ~base()
    {
        cout << "调用基类析构函数" << endl;
    }
    private:
    int name;
    char *malloc_buf;
};

class sub : public base
{
    public:
    sub(int _name)
    {
        name = _name;
    }
    ~sub()
    {
        cout << "调用父类析构函数" << endl;
    }
    private:
    int name;
};


int main()
{
    sub* sb = new sub(1);
    if(NULL != sb)
    {
        delete sb;
    }
}

你可能感兴趣的:(c++ 虚析构函数)