Описание тега virtual-functions

В объектно-ориентированном программировании виртуальная функция или виртуальный метод - это функция или метод, поведение которых может быть переопределено в наследующем классе функцией с той же сигнатурой. Эта концепция является очень важной частью полиморфизма в объектно-ориентированном программировании (ООП).

Концепция виртуальной функции решает следующую проблему:

В ООП, когда производный класс наследует базовый класс, объект производного класса может называться (или приводиться) как тип базового класса или тип производного класса. Если есть методы базового класса, переопределенные производным классом, поведение вызова метода неоднозначно.

Различие между виртуальным и не виртуальным разрешает эту двусмысленность. Если рассматриваемая функция обозначена как виртуальная в базовом классе, то будет вызвана функция производного класса (если она существует). Если он не виртуальный, будет вызвана функция базового класса.

Виртуальные функции преодолевают проблемы, связанные с решением типа поля, позволяя программисту объявлять функции в базовом классе, который можно переопределить в каждом производном классе.

В C++ виртуальные методы объявляются добавлением virtual ключевое слово в объявлении функции.

Источник: Википедия (виртуальная функция)