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

本文通过一个C++示例展示了类A、B和C之间的多重继承关系,并详细解析了每个类实例所占用的内存大小及其计算依据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值