Virtual Functions

Virtual functions are functions in a parent class that are meant to be overwritten in the children classes.

Example

Output:

Virtual Functions VS Non-virtual Functions

The difference can be spotted when pointers are used. Virtual functions have late binding. Non virtual functions have early binding.

This can be understood by an example:

Output:

Couple of things to spot:

  • Two pointers are used - square_1 with type Square and square_2 with type Figure.
  • getPerimeter function is declared as virtual. This means that the code the child class (Square) executes for both pointers.
  • getArea function is non-virtual function. So for the pointer square_2 the code from the parent class (Figure) will be executed.