首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于虚继承的一个有关问题

2012-02-05 
关于虚继承的一个问题。在VC6.0环境下运行如下代码:#include iostreamusingnamespacestdclassA{public:v

关于虚继承的一个问题。
在VC6.0环境下运行如下代码:
#include <iostream>
using   namespace   std;

class   A
{
public:
  virtual   void   aa();

};

class   B:public   virtual   A
{
public:
        virtual   void   bb();
};

class   C:   public   virtual   B
{
public:
virtual   void   cc();
};

int   main()
{
cout < <sizeof(A) < <endl;
cout < <sizeof(B) < <endl;
cout < <sizeof(C) < <endl;
return   0;
}
最终输出结果是:4,12,20。有没有高手给我讲解一下,得出这个结果的原理。
另外,如果把代码中的虚继承修改为继承,则输出结果为4,4,4,这又是为什么?请高手帮忙。

[解决办法]
去看《深度探索C++对象模型》
[解决办法]
Inside C++ Object Model
[解决办法]
Inside The C++ Object Model第三章,中文版的116页
[解决办法]
以前板子上N多人问过这个问题
是一道面试题
你就baidu搜 "多继承 虚继承时内存布局,sizeof()怎么计算? "
就行了
那个帖子被删了,貌似,没了

热点排行