请教虚析构函数的作用

reddiablo 2010-11-01 12:12:20
我已经知道,如果父类的析构函数不是虚的,一个父类的指针指向子类的对象以后,一旦delete这个父类的指针,子类的析构函数不会被调用,子类占用的一些资源就不会被释放。

但是,我还是不明白,为什么父类的析构函数是虚的了,当delete这个父类的指针以后,子类的析构函数就能被调用了呢?这也是虚函数表的原理么?

求内幕!
...全文
129 9 打赏 收藏 转发到动态 举报
写回复
用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》

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧