关于虚继承的一个问题。
在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()怎么计算? "
就行了
那个帖子被删了,貌似,没了