#include <stdio.h>
class D
{
};
class C
{
public:
char szPointerSize_0x4; // 4
};
class B : public C, public D // Size would only be 0x4 with 1 inherited class
{
public:
char szPointerSize_0x8; // 8
};
class A : virtual public B // Size would only be 0x8 if it I removed virtual
{
public:
char szPointerSize_0xC; // 12
};
int main()
{
size_t APtr = sizeof(unsigned long(A::*)());
size_t BPtr = sizeof(unsigned long(B::*)());
size_t CPtr = sizeof(unsigned long(C::*)());
printf("A: %d\nB: %d\nC: %d\n", APtr, BPtr, CPtr);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpjbGFzcyBECnsKCn07CgpjbGFzcyBDCnsKcHVibGljOgogICAgY2hhciBzelBvaW50ZXJTaXplXzB4NDsgLy8gNAp9OwoKY2xhc3MgQiA6IHB1YmxpYyBDLCBwdWJsaWMgRCAvLyBTaXplIHdvdWxkIG9ubHkgYmUgMHg0IHdpdGggMSBpbmhlcml0ZWQgY2xhc3MKewpwdWJsaWM6CiAgICBjaGFyIHN6UG9pbnRlclNpemVfMHg4OyAvLyA4Cn07CgpjbGFzcyBBIDogdmlydHVhbCBwdWJsaWMgQiAvLyBTaXplIHdvdWxkIG9ubHkgYmUgMHg4IGlmIGl0IEkgcmVtb3ZlZCB2aXJ0dWFsCnsKcHVibGljOgogICAgY2hhciBzelBvaW50ZXJTaXplXzB4QzsgLy8gMTIKfTsKCmludCBtYWluKCkKewogICAgc2l6ZV90IEFQdHIgPSBzaXplb2YodW5zaWduZWQgbG9uZyhBOjoqKSgpKTsKICAgIHNpemVfdCBCUHRyID0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcoQjo6KikoKSk7CiAgICBzaXplX3QgQ1B0ciA9IHNpemVvZih1bnNpZ25lZCBsb25nKEM6OiopKCkpOwoKICAgIHByaW50ZigiQTogJWRcbkI6ICVkXG5DOiAlZFxuIiwgQVB0ciwgQlB0ciwgQ1B0cik7CgogICAgcmV0dXJuIDA7Cn0=