devxlogo

Convert a Virtual-function-call Into a Non-virtual-function-call

Convert a Virtual-function-call Into a Non-virtual-function-call

Consider the code snippet below:

 BaseClass *bp;for(i =0;iVirtualFunc();

size=3>
Such a situation can lead to an unacceptably high overhead of calling a virtual function. This can be remedied by converting the virtual function call in a non-virtual function call. This code fragment shows how to directly call a virtual function so as to avoid the overhead of a virtual-function-call:

 BaseClass *bp;if(typeid(*bp) == typeid(BaseClass)){     for(i =0;iBaseClass::VirtualFunc();}else if(typeid(*bp) == typeid(DerivedClass)){       for(i =0;iDerivedClass::VirtualFunc();}else{           for(i =0;iVirtualFunc();}

devx-admin

Share the Post: