永发信息网

C++中虚继承与普通继承的sizeof问题,求大神解

答案:1  悬赏:20  手机版
解决时间 2021-04-03 00:36
  • 提问者网友:雪舞兮
  • 2021-04-02 19:04
C++中虚继承与普通继承的sizeof问题,求大神解
最佳答案
  • 五星知识达人网友:迷人又混蛋
  • 2021-04-02 19:13
对于class A,
(1)由于含有虚函数,包含虚函数指针,大小4字节。
(2)a数组的类型是char,大小是3,占3字节,因为需要前面对齐到4的整数倍,所以有1个占位符。
因此,总的大小是4+3+1=8

对于class B,
(1)由于含有虚函数,包含虚函数指针,大小4字节。
(2)b数组类型是char,大小是3,占3字节。因为需要前面对齐到4的整数倍,所以有1个占位符。
(3)继承A的char数组,大小是3,占3字节。因为需要前面对齐到4的整数倍,所以有1个占位符。
因此,总的大小是4+3+1+3+1=12

对于class C,
(1)由于含有虚函数,包含虚函数指针,大小4字节。
(2)c数组类型是char,大小是3,占3字节。因为需要前面对齐到4的整数倍,所以有1个占位符。
(3)由于是虚继承,有一个指向父类的指针,大小字节。
(4)父类A本身大小为8字节。
因此,总的大小为4+3+1+4+8=20追问大神,A中的char a[3]不是private吗?为什么B还能继承a呢?追答这跟private没啥关系,原来多大就多大,能不能用是另外一回事
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯