class A{
virtual void a();
};
class B : A{
virtual void a();
};
class C{
virtual void a();
};
class E : A, C{
virtual void a();
};
int main(){
std::cout << (sizeof(B)) << "\n"; // 4
std::cout << (sizeof(C)) << "\n"; // 4
std::cout << (sizeof(E)) << "\n"; // 8
}
在 32 位系统 linux 中
为什么 sizeof(B) 和 sizeof(C) 都是 4
对于C类,它有一个虚函数,所以在C类中隐藏了一个虚拟指针,它是4字节
但是为什么B类的大小也是4。我认为它在B类中存在两个指针,一个是针对B本身的,因为B类有一个虚函数,一个是针对A的。
那么E的同样问题?
任何帮助表示赞赏