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