如果不是虚继承:
成员+父类大小
不考虑子类虚函数和指向父类的指针
如果是虚函数:
父类大小+成员+指向父类的指针+新的虚函数表指针(如果有新的虚函数)
#include "stdafx.h"
#include<iostream>
using namespace std;
class Base{ //4
public:
virtual void fun1(){}
};
class Derived1: public Base// 4+4 8
{
public:
char a[3];
};
class Derived2: public Base//父类4+char a[3] 4 8
{
public:
virtual void fun2(){}
char a[3];
};
class Derived3: public virtual Base//父类4+char a[3] 4+指向父类的指针 12</span>
{
public:
char a[3];
};
class Derived4: public virtual Base//父类4+char a[3] 4+指向父类的指针 +新的虚函数表的指针16
{
public:
char a[3];
virtual void fun3(){}
};
int _tmain(int argc, _TCHAR* argv[])
{
cout << "4 " << sizeof(Base) << endl;
cout << "Derived1 8 " << sizeof(Derived1) << endl;
cout << "Derived2 8 " << sizeof(Derived2) << endl;
cout << "Derived3 12 " << sizeof(Derived3) << endl;
cout << " Derived4 16 " << sizeof(Derived4) << endl;
system("pause");
return 0;
}