C++中的虚析构函数

更新时间:2023-05-14 19:14:54 阅读: 评论:0

C++中的虚析构函数
Cpp中的虚析构函数
1.虚析构函数的作⽤:为了避免内存泄漏,⽽且是当⼦类中会有指针成员变量时才会使⽤到。即虚析构函数使得在删除指向⼦类对象的
基类指针时,可以调⽤⼦类的析构函数来实现释放⼦类中堆内存的⽬的,从⽽防⽌内存泄漏。
2.C++中开发中,基类中的析构函数⼀般都是虚函数,如下⾯的例⼦:
#include <iostream>
using namespace std;
// 基类
class Ba{
public:
Ba(){};
virtual ~Ba(){  // 基类的析构函数是虚函数!
cout << "delete Ba\n";
};
virtual void DoSomething(){
cout << "Do Something in class Ba!\n";
};平方怎么计算方法>学生自我评价15字
};
蒙特梭利幼儿园
// 派⽣类
class Derived: public Ba{
public:
Derived(){};
~
二元二次方程组
Derived(){
甄继先cout << "delete Derived\n";
};
void DoSomething(){十一朵玫瑰代表什么意思
cout << "Do Something in Derived\n";
};
};
int main(){
Ba *b = new Derived;
b->DoSomething();  // 重写DoSomething函数
delete b;
血浆蛋白结合率return 0;
}
3.如果把基类Ba中的虚析构函数改成普通析构函数,结果如下所⽰。也就是说,派⽣类Derived中的析构函数压根就没有被调⽤!⼀般来说,类的析构函数⽤来释放内存中的资源,当析构函数没有被调⽤的话,就会造成内存泄漏。
4.虚析构函数作⽤总结:
朝饮木兰之坠露(a) 如果基类的析构函数不加virtual关键字,那么就是普通析构函数
当基类中的析构函数没有声明为虚析构函数时,派⽣类开始从基类继承,基类的指针指向派⽣类的对象时,delete基类的指针时,只会调⽤基类的析构函数,不会调⽤派⽣类的析构函数。
(b) 如果基类的析构函数加virtual关键字,那么就是虚析构函数
当基类中的析构函数声明为虚析构函数时,派⽣类开始从基类继承,基类的指针指向派⽣类的对象时,delete基类的指针时,先调⽤派⽣类的析构函数,再调⽤基类中的析构函数。

本文发布于:2023-05-14 19:14:54,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/631075.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图