On Saturday, 10 November 2012 at 09:23:40 UTC, Marco Leise wrote:
They work like this: Each object has as a pointer to a table
of method pointers. When you extend a class, the new method
pointers are appended to the list and existing entries are
replaced with overrides where you have them.
So a virtual method 'draw()' may get slot 3 in that table and
at runtime it is not much more than:

obj.vftable[3]();

Is vftable essentially an array? So, it's just a matter of offsetting a pointer to get access to any particular slot in the table?

If virtual method calls are really that fast to do, then I think the idiom in the code snippet of my first post is useless, and the idiom they represent in that video I linked to is actually pretty great.

Note: In order to make that video's sound bearable, you have to cut out the highest frequencies of the sound and lower some of the middle ones. I happened to have this "Realtek HD Audio Manager" which made it simple. Using the "city" filter helped a bit too. Don't know what it did.

Reply via email to