In this example, the code generated for each of the classes A, B and C will include a dispatch table that can be used to call on an object of that type, via a reference that has the same type. Class C will have an additional dispatch table, used to call on an object of type C via a reference of type B. The expression will use B's own dispatch table or the additional C table, depending on the type of object b refers to. If it refers to an object of type C, the compiler must ensure that C's implementation receives an instance address for the entire C object, rather than the inherited B part of that object.