请教一个计算虚继承中计算类大小的问题?谢谢!

rabbit729 2009-03-07 10:48:52
请问下面代码为什么输出8 20 32(编译环境为VS2005).本人认为应该是8 16 24.还请大家给指正,谢谢!
#include <iostream>
using namespace std;

class A
{
char k[3];
public:
virtual void aa()
{

}
};

class B : public virtual A
{
char j[3];
public:
virtual void bb()
{

}
};

class C : public virtual B
{
char i[3];
public:
virtual void cc()
{

}
};
void main(void)
{
cout<<sizeof(A)<<endl;
cout<<sizeof(B)<<endl;
cout<<sizeof(C)<<endl;
}
...全文
105 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
arong1234 2009-03-08
  • 打赏
  • 举报
回复
搞不明白怎么那么多人热衷于研究这个?!好得程序员不应该依赖这个信息进行设计,既然不需要,为什么要研究?!
zhkefa 2009-03-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 pengzhixi 的回复:]
sizeof(B)=sizeof(A)+3(类B的3个字符)+1(对齐)+vptr_class_b(4)+pointer_to_A(4)
同样sizeof(C)就不说了
[/Quote]

正解。
leo315 2009-03-08
  • 打赏
  • 举报
回复
没意思
  • 打赏
  • 举报
回复
类你也讨论sizeof,没意义了吧.
结构体还可以讨论下吧.
brookmill 2009-03-07
  • 打赏
  • 举报
回复
pengzhixi 2009-03-07
  • 打赏
  • 举报
回复
sizeof(B)=sizeof(A)+3(类B的3个字符)+1(对齐)+vptr_class_b(4)+pointer_to_A(4)
同样sizeof(C)就不说了
zwicker 2009-03-07
  • 打赏
  • 举报
回复
编译器进行了优化,讨论这种问题没意义

64,637

社区成员

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

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