网易招聘上有这样一道题:
// ttt.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
class A
{
char a[2];
public:
//void CommonFunction();
virtual void aaa() {};
};
class B :public virtual A
{
char b[2];
char a[2];
public:
virtual void bb() {};
virtual void aa() {};
};
class C :public virtual B
{
char aa[2];
char bb[2];
char cc[2];
public:
virtual void ccc() {};
};
int main()
{
return 0;
}
问三个类占用的字节数分别为多少。
可以看到,首先是该类中按声明顺序排列的虚函数的指针,每个为4个字节,然后是该类中的变量,其次是继承的父类中的内存分布。