结构体 对齐问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 11:04:19
#include "stdafx.h"
#include <iostream>
using namespace std;
#pragma pack(2)

class A
{
char s[3];
virtual int aa(){};
};

class B : public virtual A
{
char j[3]; //加入一个变量是为了看清楚class中的vfptr放在什么位置
public:
virtual int bb(){};
};
class C : public virtual B
{
char i[3];
public:
virtual int cc(){};
};
int main()
{
cout <<sizeof(A) <<endl;
cout <<sizeof(B) <<endl;
cout <<sizeof(C) <<endl;
//C c();
//cout < <c < <endl;
system("pause");
}
sizeof(b)的大小为什么是二十
vs2008

B里面有一整套A的内容, 一整套B的内容, 还有一个指向A的内容开始位置的指针, 整个就是20

虚基类的情况下派生类和基类的内容是隔离的, 包括vptr也不会共用, 只通过一个指针联系。