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

虚析构函数的作用

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

相关文章

  • 2020-02-10 C++基础2

    1:为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数? 将可能会被继承的父类的析构函数设置为虚...

  • C++虚函数的一些奇怪问题总结

    构造函数能否为虚函数?在构造函数中调用虚函数会如何?析构函数能否为虚函数?析构函数能否为纯虚函数?其实日常开发中基...

  • C++的虚析构函数

    首先,我们必须知道,虚析构函数是有其本身的目的,所以正常情况下,我们不应该声明虚析构函数。 构造函数和析构函数是一...

  • c++primer 15.24-15.30

    15.24基类一般定义一个虚析构函数但是虚析构函数会阻止移动操作但是虚析构函数会帮助基类派生类体系动态销毁对象15...

  • C++中,构造函数不能设为虚函数,基类析构函数应该设为虚函数

    构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。不建议在构造函数和析构函数里面调用...

  • C++第9天: 第137-第142课 纯虚函数,抽象类,虚析构,

    纯虚析构,防止父类指针无法访问子类析构函数

  • 虚析构函数的作用

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

  • 虚析构函数的作用

    基类ClxBase析构函数前添加virtual,输出结果如下: Do something in class Clx...

  • 百度C++岗暑期实习面试

    时间:2h 1.虚函数的作用2.虚函数的实现原理,虚函数表3.为什么要用虚析构函数4.new/delete比mal...

  • 真正理解虚析构函数

    在我真正理解虚析构函数之前,差不多每隔一个月,我都要百度一下“虚析构函数的作用”。因为我在写一个类时,总是不能确定...

网友评论

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

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