C++类中基类 继承类的大小

class A { public: A(){} virtual ~A(){} protected: virtual void fun(){} private: int a; }; class B { public: B(){} virtual ~B(){} protected: virtual void fun(){} private: BYTE a; }; class C:public A,B { public: C(){} virtual ~C(){} protected: virtual void fun(){} private: int a; BYTE b; BYTE c; }; 请问下列输出是什么: A a; B b; C c; printf("sizeof(A) = %d",sizeof(a)); printf("sizeof(B) = %d",sizeof(b)); printf("sizeof(C) = %d",sizeof(c));

 

答案:
8
8
24

 

sizeof(A) = vptr(A) + sizeof(int) = 8

 

sizeof(B) = vptr(B) + sizeof(byte) + 3(4 bytes allign) = 8

 

sizeof (C) =  vptr(C) (A 与 C 共用一个vptr) + vptr(B) + sizeof(int) + sizeof(byte) + sizeof(byte) + 2(4 bytes allign) = 24

你可能感兴趣的:(C++,c,Class,byte,fun)