I had been reading through the Wikipedia article on virtual inheritance. I adopted the entire article however i couldn't follow the final paragraph
This really is implemented by supplying Mammal and WingedAnimal having a vtable pointer (or "vpointer") since, e.g., the memory offset between your beginning of the Mammal as well as its Animal part is unknown until runtime. Thus Softball bat becomes (vpointer,Mammal,vpointer,WingedAnimal,Softball bat,Animal). You will find two vtable pointers, one per inheritance hierarchy that almost gets Animal. Within this example, one for Mammal and something for WingedAnimal. The item size has therefore elevated by two pointers, however there's just one Animal with no ambiguity. All objects of type Softball bat will have a similar vpointers, but each Softball bat object will contain its very own unique Animal object. If another class gets from Mammal, for example Squirrel, then your vpointer within the Mammal object inside a Squirrel is going to be not the same as the vpointer within the Mammal object inside a Softball bat, even though they can nonetheless be basically exactly the same in the special situation the Squirrel area of the object has got the same size because the Softball bat part, because then your distance in the Mammal towards the Animal part is identical. The vtables aren't truly the same, but all essential information inside them (the length) is.
Can someone please shed more light about this.
I am unable to, really. This attempts to describe what ought to be completed in a C++ implementation using virtual method tables to supply dynamic binding (just in case of multiple inheritance).
If you are not carrying out a compiler, make an effort to: Think before. Read your preferred C++ book on inheritance, virtual techniques, mulitple inheritance and virtual inheritance.
Plus, use of a vtable isn't needed through the C++ standard (IIRC), this is an implementation detail. So really, think before.