Below is a pseudo declaration for a multilevel inheritance.Base class ( protected int data)derived1 : virtual public base ( protected int data1 )derived2 : virtual public base ( protected int data2)derived3 : derived1,derived2 ( private int data3 )Main(){ base b;    derived1 d1;   derived2 d2;   derived3 d3; }    sizeof(b) // 4 which is correct as only int (4bytes)    sizeof(d1) // 12 why not 8 -> 4(base) + 4(derived)    sizeof(d2) // ??? whatever applies above should apply here    sizeof(d3) // 24 why not 12 -> 4(base) + 4(derived1/derived2) + 4(d3).Does size also include virtual tables also. Again here there cannot be virtual table as no virtual function defined. Please help in clarifying my doubt.PS: What I have understood till now:Unless the function is declared virtual in base class, base *bptr; derived d; bptr = &d; bptr->fun();  // will call the base class function.But if the fun() is declared virtual then the above code will call derived class fun().
Size of objects during Multilevel inheritance
c++;object;multiple inheritance