讨论/面试考题/面试遇到的一个问题,单继承相关(C++)/
面试遇到的一个问题,单继承相关(C++)

简介

今天面试的时候,遇到面试官提出的一个问题,现在有两个类如下:

class A{
private:
int a;
char b;
}

class B:public A{
private:
char c;
}

B b; //生成一个b对象
求这个b对象的大小。

考虑到继承的话,derived class object中应该包含有base class subobject的成分:那么,对于class A的suboject,考虑到alignment,其大小应该为8(测试结果class A object的大小确实是8),所以理论上对象b的大小考虑alignment后应该是12。

随后在playground上测试,b的大小却是8。但是把class A的访问控制改为public后,b的大小就变为12了...然后面试官也没想出来为什么。。。大家对此有什么看法吗?

展开讨论
Alfeim发起于 2020-01-09
最近编辑于 2020-01-10

在window上实测,都是12

展开全部 5 讨论