虚继承、虚函数空间占用

xiaoguangzaia 2011-06-13 11:47:41
我是在vc6.0下测试
对于这方面不太清楚,网上看了资料(下面的博客)
http://blog.csdn.net/haoel/archive/2007/12/18/1948051.aspx
对虚函数表比较清楚了,但是对于虚继承和虚函数混合时函数所占空间还不是很清楚

1.在类中包含虚函数的时候会有一个指针指向虚函数表,当虚继承时也是一个指针吗?
网上说也是指向一个虚函数表,这个虚函数表和虚函数的那个虚函数表是一个东西吗?

2.当一个基类和其派生类都有虚函数时,如果派生类不是虚继承,那么派生类中应该只有一个指针指向虚函数表,
但是当改为虚继承的时候,占用空间就增大了8,不知道增大的是不是两个指针,这时候这两个指针分别指向什么
内容呢?是不是这时候基类和派生类的虚函数表就分开了,增加了一个指针,但是另一个指针是什么呢?(这里应该涉及到虚继承的具体实现方法吧,最好也能说明一下)

3.对于多层的继承情况应该和2是一样的吧,如果每一层都有虚函数,那么假设有N层继承,则当所有继承都为普通继承时最底层的子类中应该有N-1个指针指向虚函数表。但是如果为虚继承,那么会有2N(2N-1 ?)个指针。
...全文
177 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoguangzaia 2011-06-15
  • 打赏
  • 举报
回复
这个博客里面讲的挺好
http://blog.csdn.net/haoel/archive/2008/10/15/3081385.aspx
pathuang68 2011-06-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xiaoguangzaia 的回复:]

自己顶!谁能说详细点啊
[/Quote]

请参考:
对象内存布局 (12)以及后续的后续的4篇文章。
就想叫yoko 2011-06-13
  • 打赏
  • 举报
回复
inside C++ object modal

人家一本书讲这个问题
不是在这里一两句话能讲清楚的
xiaoguangzaia 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dizuo 的回复:]

建议lz看一下《深入对象模型》
[/Quote]
能不能先讲一下啊,找了一上午,呵呵,谢谢了!
ryfdizuo 2011-06-13
  • 打赏
  • 举报
回复
建议lz看一下《深入对象模型》
qwer_boo 2011-06-13
  • 打赏
  • 举报
回复
xiaoguangzaia 2011-06-13
  • 打赏
  • 举报
回复
自己顶!谁能说详细点啊
ryfdizuo 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xiaoguangzaia 的回复:]

引用 1 楼 dizuo 的回复:

建议lz看一下《深入对象模型》

能不能先讲一下啊,找了一上午,呵呵,谢谢了!
[/Quote]
类中有一个指向虚函数表的指针vptr,是一个二级指针。指向类的虚函数表vtable,每个类的虚函数表只有一个。虚继承是存在菱形继承的时候使用。

64,653

社区成员

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

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