C++计算多继承对象的大小问题
code
#include <iostream>
using namespace std;
class A
{
private:
int a;
int a1;
public:
A(/* args */){}
~A(){}
};
class B:public A
{
private:
int b;
public:
B(/* args */){}
~B(){}
};
class C:public A
{
private:
int c;
int c1;
public:
C(/* args */){}
~C(){}
};
class E:public A
{
private:
int e;
int e1;
public:
E(/* args */){}
~E(){}
};
class D:public B,public C,public E
{
private:
int c;
public:
D(/* args */){}
~D(){}
int DD(){return 1;}
};
int main(int argc, char const *argv[])
{
A *a = new A();
A *b = new B();
A *c = new C();
A *e = new E();
E *ed = new D();
B *bd = new D();
C *cd = new D();
cout << "a size "<< sizeof(*a) << endl;
cout << "b size "<< sizeof(*b) << endl;
cout << "c size "<< sizeof(*c) << endl;
cout << "e size "<< sizeof(*e) << endl;
cout << "ed size "<< sizeof(*ed) << endl;
cout << "bd size "<< sizeof(*bd) << endl;
cout << "cd size "<< sizeof(*cd) << endl;
return 0;
}
result
a size 8
b size 8
c size 8
e size 8
ed size 16
bd size 12
cd size 16