I think what the author meant was that the compiler does not generate a vtable entry that is never needed. If you declare a function as virtual in a base class, and that function is always called in the scope of a known class, the compiler might as well skip the vtable entry for that function. Or if you declare a virtual fuction in a class with no sub- or superclasses, there's no point in using a vtable at all. As for the inline declaration of a function, it only tells the compiler that you would prefer to have the code generated inline. If the function is virtual, you will still get a pointer in the vtable to that function (unless optimized away by the compiler). Might add that I'm not an expert on the inner logic of an actual compiler, so the case may be a bit more complicated than this :-) -- modified at 12:33 Thursday 25th October, 2007