虚函数表与析构函数

qianlima210210 2014-02-22 10:48:46
因为c++类的析构函数一般都声明为虚函数,请问它是否也存在于该类的虚函数表中。
如果没有,那调用时,是如何找到它的(从父类到子类一层一层的调用)。
...全文
123 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
漫步者、 2014-02-22
  • 打赏
  • 举报
回复
引用 3 楼 qianlima210210 的回复:
[quote=引用 2 楼 ganpengjin1 的回复:] 虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样,指明了实际所应该调用的函数。
版主,我问的是:析构函数一般都声明为虚函数,请问它是否也存在于该类的虚函数表中?[/quote] 这段话里面不是已经说明了吗
漫步者、 2014-02-22
  • 打赏
  • 举报
回复
引用 3 楼 qianlima210210 的回复:
[quote=引用 2 楼 ganpengjin1 的回复:] 虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样,指明了实际所应该调用的函数。
版主,我问的是:析构函数一般都声明为虚函数,请问它是否也存在于该类的虚函数表中?[/quote] 存在。
qianlima210210 2014-02-22
  • 打赏
  • 举报
回复
好了,通过调试验证,析构函数一般都声明为虚函数,也存在于该类的虚函数表中
Pump天天学习 2014-02-22
  • 打赏
  • 举报
回复
是的,《对象模型》上有讲解
qianlima210210 2014-02-22
  • 打赏
  • 举报
回复
引用 2 楼 ganpengjin1 的回复:
虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样,指明了实际所应该调用的函数。
版主,我问的是:析构函数一般都声明为虚函数,请问它是否也存在于该类的虚函数表中?
漫步者、 2014-02-22
  • 打赏
  • 举报
回复
虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样,指明了实际所应该调用的函数。
turing-complete 2014-02-22
  • 打赏
  • 举报
回复
实现上来讲,是存在于虚表中,我做过实验。标准怎么说,咱就不得而知了。 http://blog.csdn.net/mougaidong/article/details/6894563

64,654

社区成员

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

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