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
Language: C++
Expertise: Beginner
Oct 5, 2004

When to Use Virtual Functions

The decision to use virtual functions is a simple matter. You just need to know when you'd want to override a base method. Take the following code as an example:

class Animal
{
public:
   void MakeSomeNoise()
   {
      cout << "nothing";
   }
};

class Bird : public Animal
{
public:
  void MakeSomeNoise()
  {
     cout << "Tweet";
  }
};
In this case, I'd want to override MakeSomeNoise(). But what if I didn't? This is what would happen:

Animal * pAnimal = new Bird;
pAnimal->MakeSomeNoise();

**Output**
nothing
The screen would say nothing because for all intents and purposes, C++ only sees an animal. However, if you declared it virtual, it knows to search for the lowest method in the class hierachy. Try it again:

class Bird : public Animal
{
public:
  virtual void MakeSomeNoise()
  {
     cout << "Tweet";
  }
};


Animal * pAnimal = new Bird;
pAnimal->MakeSomeNoise();

**Output**
Tweet
Sophy Pal
 
Comment and Contribute

 

 

 

 

 


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

 

 

Sitemap