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
Share the Post:
Share on facebook
Share on twitter
Share on linkedin


Recent Articles: