fork download
  1. #include <stdio.h>
  2.  
  3. class D
  4. {
  5.  
  6. };
  7.  
  8. class C
  9. {
  10. public:
  11. char szPointerSize_0x4; // 4
  12. };
  13.  
  14. class B : public C, public D // Size would only be 0x4 with 1 inherited class
  15. {
  16. public:
  17. char szPointerSize_0x8; // 8
  18. };
  19.  
  20. class A : virtual public B // Size would only be 0x8 if it I removed virtual
  21. {
  22. public:
  23. char szPointerSize_0xC; // 12
  24. };
  25.  
  26. int main()
  27. {
  28. size_t APtr = sizeof(unsigned long(A::*)());
  29. size_t BPtr = sizeof(unsigned long(B::*)());
  30. size_t CPtr = sizeof(unsigned long(C::*)());
  31.  
  32. printf("A: %d\nB: %d\nC: %d\n", APtr, BPtr, CPtr);
  33.  
  34. return 0;
  35. }
Success #stdin #stdout 0.02s 2680KB
stdin
Standard input is empty
stdout
A: 8
B: 8
C: 8