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: 367
        
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