我知道的是,空类的大小是1,只是为了符合不允许大小的对象(及其类)为0的标准。在这里,我得到了派生类D的大小为2.为什么行为在这种情况下是不同的 假设没有数据成员或虚拟指针从类B和C继承到D?为什么从两个空类派生的空类的大小是2?
#include<iostream>
using namespace std;
class A {};
class B : public A {};
class C : public A {};
class D : public B, public C {};
int main() {
cout<<"Size of D is: "<<sizeof(D)<<endl;
return 0;
}
也许是因为它由两个大小为1的基类组成? –
@o_weisman但实际上,这些基类的大小为0,只是为了每个对象被分配不同的内存,大小设置为1,与D类的情况相同,这应该是什么行为。 – cbinder
@DrorMeirovich您提到的问题的参考资料是关于虚拟指针的,但在这种情况下,类是空白的,并且没有涉及数据成员(包括虚拟指针)的继承。 – cbinder