请帮忙解释两道数据对齐问题的结果
请帮忙解释以下两个程序的结果(编译环境为VC6.0)
//程序一
#include <iostream>
using namespace std;
class A
{
public:
void foo()
{
cout<<"A"<<endl;
}
char a;
};
class B :virtual public A
{
public:
void fool()
{
cout<<"B"<<endl;
}
int b;
};
class C:virtual public A
{
public:
void fooll()
{
cout<<"C"<<endl;
}
int c;
};
class D:public B, public C
{
public:
void foolll()
{
cout<<"D"<<endl;
}
int d;
};
int main()
{
A aa;
B bb;
C cc;
D dd;
cout<<sizeof(aa)<<"\t"<<sizeof(bb)<<endl;
cout<<sizeof(cc)<<"\t"<<sizeof(dd)<<endl;
system("pause");
return 0;
}
//输出结果为1 9 9 21
//请解释:
//程序二
#include <iostream>
using namespace std;
class A
{
public:
void foo()
{
cout<<"A"<<endl;
}
char a;
int b;
};
int main()
{
A aa;
cout<<sizeof(aa)<<endl;
system("pause");
return 0;
}
//输出结果为8
//请解释: