When to Use Virtual Functions

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
See also  5 Tips for Working With an Onsite Interpreter

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist