Описание тега virtual-functions
Концепция виртуальной функции решает следующую проблему:
В ООП, когда производный класс наследует базовый класс, объект производного класса может называться (или приводиться) как тип базового класса или тип производного класса. Если есть методы базового класса, переопределенные производным классом, поведение вызова метода неоднозначно.
Различие между виртуальным и не виртуальным разрешает эту двусмысленность. Если рассматриваемая функция обозначена как виртуальная в базовом классе, то будет вызвана функция производного класса (если она существует). Если он не виртуальный, будет вызвана функция базового класса.
Виртуальные функции преодолевают проблемы, связанные с решением типа поля, позволяя программисту объявлять функции в базовом классе, который можно переопределить в каждом производном классе.
В C++ виртуальные методы объявляются добавлением virtual
ключевое слово в объявлении функции.
Источник: Википедия (виртуальная функция)