基类为什么需要虚析构函数 析构函数为什么是虚函数?
浏览量:2235
时间:2021-03-12 02:48:17
作者:admin
析构函数为什么是虚函数?
使用delete PA指向基类引用时,释放PA引用的内存,PA引用B object,为什么不调用B的析构函数呢?这里,由于是静态绑定,当B在编译时确定了它指向的函数时,它不会根据对象a来确定它指向的函数,这样,如果B申请内存资源,但不释放析构函数中的资源,就会导致内存泄漏。
仔细想想,这不是虚拟功能的原因吗?
添加了虚拟机制。编译时,虚拟机会自动将方法指向B的地址,通过设置机制可以找到B的析构函数。
为了改变这一点,有一个虚拟析构函数
只要基类的析构函数设置为virtual type,所有派生类都会自动将析构函数设置为virtual type,以确保不会因为没有调用析构函数而导致内存泄漏。
C 中基类的析构函数为什么要用virtual虚析构函数?
如果不使用virtual进行解构,则无法解构子类,因为您将直接调用父类的解构。
建议您补充多态性知识。多态性是如何实现的。
基类为什么需要虚析构函数 举例说明虚析构函数的作用 纯虚构造函数
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。