Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Home » Tip Bank » C++
Language: C++
Expertise: Beginner
May 21, 2001

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


Consider the code snippet below:
 
BaseClass *bp;
for(i =0;i< VERY_LARGE_NUM;i++)
  bp->VirtualFunc();

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;i< VERY_LARGE_NUM;i++)
                 bp->BaseClass::VirtualFunc();
}
else if(typeid(*bp) == typeid(DerivedClass))
{
       for(i =0;i< VERY_LARGE_NUM;i++)
                 bp->DerivedClass::VirtualFunc();
}
else
{
           for(i =0;i< VERY_LARGE_NUM;i++)
                     bp->VirtualFunc();
}
Prateek Bidwalkar
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date