随笔-22  评论-7  文章-0  trackbacks-0

#include <iostream.h>

class A
{};

class B
{};

class C         //情况1
//class C:public A //情况2
{
 virtual void fun()=0;
};

class D:public B,public C
{
};

int main()
{
 cout<<sizeof(D)<<endl;
 return 0;
}

情况1时sizeof(D)为4,
情况2时sizeof(D)为8,

啥原因,谁解释下?
posted on 2010-06-01 22:09 楚天清秋 阅读(653) 评论(6)  编辑 收藏 引用 所属分类: C,C++

评论:
# re: 关于sizeof(类)的大小 2010-06-02 00:31 | Sunshine Alike
两个虚指针,故大小为8,完毕!  回复  更多评论
  
# re: 关于sizeof(类)的大小 2010-06-02 10:06 | 楚天清秋
@Sunshine Alike
情况1的时候同样,为啥结果不同。。。。  回复  更多评论
  
# re: 关于sizeof(类)的大小 2010-06-02 10:52 | heart168
能否解释一下哪两个虚指针呢?  回复  更多评论
  
# re: 关于sizeof(类)的大小 2010-06-04 14:05 | Sunshine Alike
@楚天清秋
sorry sorry, 当时没细想就写了.
这个应该是内存对齐的原因吧,虚指针是只有一个,4字节.
情况2可能是因为多级继承会有额外字节记录this指针的偏移吧.  回复  更多评论
  
# re: 关于sizeof(类)的大小 2010-06-04 14:05 | Sunshine Alike
@heart168
同上  回复  更多评论
  
# re: 关于sizeof(类)的大小 2010-06-09 12:12 | 楚天清秋
还是没明白。。。。  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理