返回信息流题目是求 sizeof(D) 的值,蒙对了,是16。 (题目没有特别说是32还是64机器,看答案应该默认是32位的)
可是空class时是1好理解,Class A是8好理解,但是为什么sizeof(D)是16,原理不是很懂,求解!!
这是一条镜像帖。来源:北邮人论坛 / cpp / #82876同步于 2014/9/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
网易笔试一道C++题,求大神求解!
t330
2014/9/28镜像同步17 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
多了2个指针?
【 在 t330 ( .*★*.爾妞°) 的大作中提到: 】
: 题目是求 sizeof(D) 的值,蒙对了,是16。
: 可是空class时是1好理解,Class A是8好理解,但是为什么sizeof(D)是16,原理不是很懂,求解!!
: [upload=1][/upload]
: ...................
虚指针指向虚基类表,貌似有待你明白了,多谢
【 在 gaoweiwei 的大作中提到: 】
: 不特意说位数的情况下按32位算,有两个int,两个虚指针指向虚基类表,16个字节
【 在 gaoweiwei 的大作中提到: 】
: 不特意说位数的情况下按32位算,有两个int,两个虚指针指向虚基类表,16个字节
怎么会有两个虚指针呢?应该只有一个吧。我猜应该是amd64的结果。ia32应该是12bytes。
还有就是恍惚记得这种虚指针什么的,应该是编译器实现相关的吧。
题目没说是32位还是64位,指向虚基类表这个貌似是和编译器有关。不过virtual B和virtual C是2个虚基类,应该是2个吧,我再查查。。
【 在 zx723 的大作中提到: 】
:
: 怎么会有两个虚指针呢?应该只有一个吧。我猜应该是amd64的结果。ia32应该是12bytes。
: 还有就是恍惚记得这种虚指针什么的,应该是编译器实现相关的吧。
【 在 t330 的大作中提到: 】
: 题目没说是32位还是64位,指向虚基类表这个貌似是和编译器有关。不过virtual B和virtual C是2个虚基类,应该是2个吧,我再查查。。
:
感觉不是。。。
虚继承多少个父类就加多少个虚表指针vbptr(与vfptr不同),它里面主要存的是基类相对它的偏移量。所以D在A的基础上加两个虚表指针的大小
可以看下这个帖子
http://www.cnblogs.com/DylanWind/archive/2009/01/12/1373919.html