Я думаю, что вы используете 32-битный компилятор.
Это макет памяти класса C:
class C size(12):
+---
| +--- (base class B)
| | +--- (base class A)
0 | | | {vfptr}
4 | | | _i
| | +---
| +---
8 | _i
+---
C::$vftable@:
| &C_meta
| 0
0 | &C::getI
1 | &C::setI
На основании этого вы можете увидеть, какие части соответствуют размеру класса.
Вы можете узнать больше о виртуальной функции, виртуальном наследовании, виртуальной таблице, чтобы выяснить, как они организованы и соответствуют размеру класса.
Если вы используете MVSC, вы можете использовать опцию -d1reportAllClassLayout при компиляции, чтобы увидеть макет вашего класса.