以下代码摘自《深度探索C++对象模型》一书。
在我的电脑上(Windows,VS2010),输出结果为:
1 4 4 8
以下是我的问题:
1、sizeof(X)=1
书中说当X类型生成两个实例xa和xb时,编译器会在A中插入一个字节,以便xa和xb可以具有不同的地址。我不太理解原因。
2、sizeof(Y)=4
通过使用虚拟继承,我们会有一个额外的虚拟指针吗?我猜这可能不同于多态性中的虚拟指针。有人能给出Y的内存布局吗?
谢谢!
#include <iostream>
using namespace std;
class X{};
class Y: public virtual X{};
class Z: public virtual X{};
class A: public Y, public Z{};
int main()
{
cout<<sizeof(X)<<" "<<sizeof(Y)<<" "<<sizeof(Z)<<" "<<sizeof(A)<<endl;
return 0;
}
在我的电脑上(Windows,VS2010),输出结果为:
1 4 4 8
以下是我的问题:
1、sizeof(X)=1
书中说当X类型生成两个实例xa和xb时,编译器会在A中插入一个字节,以便xa和xb可以具有不同的地址。我不太理解原因。
2、sizeof(Y)=4
通过使用虚拟继承,我们会有一个额外的虚拟指针吗?我猜这可能不同于多态性中的虚拟指针。有人能给出Y的内存布局吗?
谢谢!