虚继承代码:
#include "stdafx.h"
#include <iostream>using namespace std;
class A
{
char k[3];
public:
virtual void aa(){};
virtual void aaa(){};
};
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 _tmain(int argc, _TCHAR* argv[])
{
cout<<"sizeof(A): "<<sizeof(A)<<endl;
cout<<"sizeof(B): "<<sizeof(B)<<endl;
cout<<"sizeof(C): "<<sizeof(C)<<endl;
return 0;
}
输出:
sizeof(A): 8
sizeof(B): 20
sizeof(C): 32
请问,在《程序员面试宝典》中的输出结果为:8,16,24.
针对每重继承,是否因为虚继承而增加了4个字节的空间?