Quote:
Is it going to the virtual function table even though we're class A? That's the only thing I can conclude.
Yes, that is the whole point of a virtual function. You need to read about dynamic run-time binding and design patterns such as the bridge abstract factory patterns for starters. It is really important to know why this behavior exists so that you can understand some basic design patterns. This is really critical for any C++ developer to know. There are many times where you want to hide dependencies on implementation classes in order to separate interface from implementation so that they can vary independently.