继承与虚继承中内存结构的问题
下面的两段程序代码,麻烦解释下其内存的结构,具体看代码中的问号处。
#include <iostream>
using namespace std;
class A
{
char k[3];
public:
virtual void aa(){};
};
class B :public A
{
char j[3];
public:
virtual void bb(){};
};
class C: public B
{
char i[3];
public:
virtual void cc(){};
};
int main(int argc,char *agrv[])
{
A a;
B b;
C c;
cout<<"sizeof(A)"<<sizeof(a)<<endl;//为什么是8
cout<<"sizeof(B)"<<sizeof(b)<<endl;//为什么是12
cout<<"sizeof(C)"<<sizeof(c)<<endl;//为什么是16
return 0;
}
第二段代码
#include <iostream>
using namespace std;
class A
{
char k[3];
public:
virtual void aa(){};
};
class B :public virtual A
{
char j[3];
public:
virtual void bb(){};
};
class C: public virtual B
{
char i[3];
public:
virtual void cc(){};
};
int main(int argc,char *agrv[])
{
A a;
B b;
C c;
cout<<"sizeof(A)"<<sizeof(a)<<endl;//为什么是8
cout<<"sizeof(B)"<<sizeof(b)<<endl;//为什么是20
cout<<"sizeof(C)"<<sizeof(c)<<endl;//为什么是32
return 0;
}