美文网首页
C++ 基类为什么要使用虚析构函数

C++ 基类为什么要使用虚析构函数

作者: 假程序员 | 来源:发表于2019-03-28 21:25 被阅读0次
    直接的讲,C++中基类采用virtual虚析构函数是为了防止内存泄漏。具体地说,如果派生类中申请了内存空间,并在其析构函数中对这些内存空间进行释放。假设基类中采用的是非虚析构函数,当删除基类指针指向的派生类对象时就不会触发动态绑定,因而只会调用基类的析构函数,而不会调用派生类的析构函数。那么在这种情况下,派生类中申请的空间就得不到释放从而产生内存泄漏。所以,为了防止这种情况的发生,C++中基类的析构函数应采用virtual虚析构函数。

相关文章

  • C++总结

    函数 为什么基类的析构函数用虚函数 在实现多态时,当用基类操作派用类,在析构时防止只析构基类而不析构派生类的状况发...

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

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

  • c++primer 15.24-15.30

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

  • 警告:deleting object of polymorphi

    原来如果基类里有虚函数,定义了基类指针指向派生类,就会需要定义基类虚析构,这样,基类指针析构的时候,就会先析构派生...

  • ★03.关于单继承

    基类总是要写虚析构函数 通过设置析构函数为纯虚函数来让类称为抽象基类 代码 函数virtual属性的传递性 拷贝移...

  • C++中基类的析构函数为什么要用virtual虚析构函数(转)

    只要是基类,就要将析构函数设置为虚函数,否则,当将基类指针指向子类的对象时,delete基类指针不会调用子类的析构...

  • C++ - 虚析构函数

    为什么要使用虚析构函数 举例 打印: Son 存在的问题实际上创建的是一个派生类的对象,但是调用的却是基类的析构函...

  • 虚析构函数的作用与理解

    基类的析构函数一般都会被声明成虚函数,原因是,若是不设置成虚函数,在实现多态时,将子类对象赋给基类指针,在析构的过...

  • GeekBand C++面向对象高级编程(下)(第四周):没有虚

    在C++中,如果一个类是作为父类存在时,那么析构函数必须是虚析构函数,否则在对其子类进行析构时,只会释放其父类的成...

  • 虚析构函数的必要性(C++)

    1.当基类和派生类中都没有虚析构函数时 从运行结果可以看出,当通过基类指针删除派生类对象时,派生类的析构函数根本没...

网友评论

      本文标题:C++ 基类为什么要使用虚析构函数

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