Virtual Function Implementation

Posted by Gokul on Stack Overflow See other posts from Stack Overflow or by Gokul
Published on 2010-03-09T01:29:46Z Indexed on 2010/03/09 1:36 UTC
Read the original article Hit count: 314

Filed under:
|

Hi, I have kept hearing this statement. Switch..Case is Evil for code maintenance, but it provides better performance(since compiler can inline stuffs etc..). Virtual functions are very good for code maintenance, but they incur a performance penalty of two pointer indirections.

Say i have a base class with 2 subclasses(X and Y) and one virtual function, so there will be two virtual tables. The object has a pointer, based on which it will choose a virtual table. So for the compiler, it is more like

switch( object's function ptr )
{

   case 0x....:

       X->call();

       break;

   case 0x....:

       Y->call();
};

So why should virtual function cost more, if it can get implemented this way, as the compiler can do the same in-lining and other stuff here. Or explain me, why is it decided not to implement the virtual function execution in this way?

Thanks, Gokul.

© Stack Overflow or respective owner

Related posts about c++

Related posts about virtual