社区
C++ 语言
帖子详情
请教虚析构函数的作用
reddiablo
2010-11-01 12:12:20
我已经知道,如果父类的析构函数不是虚的,一个父类的指针指向子类的对象以后,一旦delete这个父类的指针,子类的析构函数不会被调用,子类占用的一些资源就不会被释放。
但是,我还是不明白,为什么父类的析构函数是虚的了,当delete这个父类的指针以后,子类的析构函数就能被调用了呢?这也是虚函数表的原理么?
求内幕!
...全文
129
9
打赏
收藏
请教虚析构函数的作用
我已经知道,如果父类的析构函数不是虚的,一个父类的指针指向子类的对象以后,一旦delete这个父类的指针,子类的析构函数不会被调用,子类占用的一些资源就不会被释放。 但是,我还是不明白,为什么父类的析构函数是虚的了,当delete这个父类的指针以后,子类的析构函数就能被调用了呢?这也是虚函数表的原理么? 求内幕!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jump23
2010-11-01
打赏
举报
回复
[Quote=引用 7 楼 libinfei8848 的回复:]
引用 3 楼 gules 的回复:
是的。
如果你真想看内幕,那就参考《Inside The C++ Object Model》
+++
[/Quote]
……
…
libinfei8848
2010-11-01
打赏
举报
回复
[Quote=引用 3 楼 gules 的回复:]
是的。
如果你真想看内幕,那就参考《Inside The C++ Object Model》
[/Quote]
+++
ForestDB
2010-11-01
打赏
举报
回复
简单的就是规定,详细的去各种各样的书吧。
黑娃
2010-11-01
打赏
举报
回复
delete一个基类指针的话,如果析构函数非虚,就不会调用指针实际指向类的析构函数。而是调用指针静态类型的那个类的析构函数,这还是虚函数表的原理
reddiablo
2010-11-01
打赏
举报
回复
[Quote=引用 1 楼 falcomavin 的回复:]
delete一个基类指针的话,如果析构函数非虚,就不会调用指针实际指向类的析构函数。而是调用指针静态类型的那个类的析构函数,这还是虚函数表的原理
[/Quote]
虚函数表不是override的时候用的么,父类的析构函数和子类的析构函数名字又不一样,也不是override啊,为什么还是虚函数表原理啊??
谁能通俗易懂地简要说说,虽然好像不是一两句话能说清楚的。再等一天结贴了。
healer_kx
2010-11-01
打赏
举报
回复
面试必问题目啊。
gaara777
2010-11-01
打赏
举报
回复
原理方面的问题。。找相关的书籍查阅,,可以找到答案..
ryfdizuo
2010-11-01
打赏
举报
回复
看下深度理解对象模型吧。构造结构拷贝的语意学
gules
2010-11-01
打赏
举报
回复
是的。
如果你真想看内幕,那就参考《Inside The C++ Object Model》
C#系列课程面向对象篇
这个是继《C#系列课程之基础知识入门篇》的篇,主要讲解的是C#中面向对象的有关知识,主要有类,接口,继承,多态,构造函数,析构函数,密封类,属性,抽象,结构体,枚举,静态类,部分类等等有关面向对象的专业...
没有虚析构或者纯虚析构的基类指针 为什么调用不到子类析构函数?
先知道:构造函数先造就别人在造就自己,析构函数先牺牲自己在牺牲别人(先构造基类,在构造自身类;先析构自身类,在析构基类) 再知道:虚析构或者纯虚析构都是用来解决 ...//测试
虚析构函数
指针 #include<i...
虚析构函数
问题:为什么要将基类的的析构函数设成虚的?
转自: ...因此,得到结论就是,只要能够保证继承关系中最高的基类的析构函数是虚的,那么就不会产生前面所谈及的问题。这就是为什么在想使用多态特性的时候,需要将基类的析构函数设成虚的真正原因。
内存泄露之
虚析构函数
(转载)
最近在检测项目的内存泄露问题,项目中用到了很多继承关系,因为没有给基类的析构函数加上关键字virture,导致子类的析构函数没有被调用,于是在网上搜了一下
虚析构函数
的
作用
,以下为转载的关于
虚析构函数
的文章...
Item 7 (多态中基类的
虚析构函数
)Declare destructors virtual in polymorphic base classes
看评注版的书的确有点吃力,作为一个英语渣,很多单词都要
请教
谷歌... 先把书上最后的总结心得Mark下,再做
虚析构函数
进行讨论分析: Polymorphic base classes should declare virtual destructors. If a class ha
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章