前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++编程经验(2):为虚基类做虚析构函数的必要性

C++编程经验(2):为虚基类做虚析构函数的必要性

作者头像
看、未来
发布2021-09-18 11:42:59
5800
发布2021-09-18 11:42:59
举报
文章被收录于专栏:CSDN搜“看,未来”

这个要提一下,如果记不住就记住:如果不做虚析构函数,会有内存泄漏

解释

定义一个基类的指针p,在delete p时,如果基类的析构函数是虚函数,这时只会看p所赋值的对象,如果p赋值的对象是派生类的对象,就会调用派生类的析构函数;如果p赋值的对象是基类的对象,就会调用基类的析构函数,这样就不会造成内存泄露。

如果基类的析构函数不是虚函数,在delete p时,调用析构函数时,只会看指针的数据类型,而不会去看赋值的对象,这样就会造成内存泄露。

多少学点设计模式就清楚了。

代码语言:javascript
复制
#include <iostream>
using namespace std;
 
class Base{
//此处省去,一切从简
};

//接下来是一个子类
class Inherit :public Base{
//此处省去,一切从简
};

//重点看调用
int main()
{
	Base *p =  new Inherit;	//这种方式的调用,这时候有没有虚析构就不一样了
	delete p;
	Base *q = new Base;
	delete q;
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解释
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档