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