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
}
in 32 bits system linux
why sizeof(B) and sizeof(C) are both 4
for class C, it has a virtual function, so there is a virtual pointer hidden in class c which is 4 bytes
but why class B's size is also 4. I think it exists two pointers in class B, one is for B itself since class B has a virtual function, one is for A.
Then same problem for E?
any help is appreciated