On Mon, Oct 10, 2005 at 09:25:15PM +0000, Frans Englich wrote: > Followup question: what is the increased cost of calling a non-virtual, > inlined function('inline' keyword) on a virtual base?
If the function is successfully inlined, then the question really refers to the cost of the code inside the function. If this code accesses a member of a virtual base object, from a pointer or reference to the derived object, this involves an extra level of dereferencing that would not be present for a non-virtual base. The derived part of the object has a pointer to the virtual base, so this pointer must be dereferenced to find the base object, then the actual member is found using a constant offset from the beginning of the base. If nonvirtual inheritance were used, the member could be found directly, at an offset from the address of the object as a whole.