Виртуальные методы C++

Виртуальный метод (виртуальная функция) — в объектно-ориентированном программировании метод (функция) класса, который может быть переопределён в классах-наследниках так, что конкретная реализация метода для вызова будет определяться во время исполнения.
Таким образом, программисту необязательно знать точный тип объекта для работы с ним через виртуальные методы: достаточно лишь знать, что объект принадлежит классу или наследнику класса, в котором метод объявлен.

или =
Виртуальный метод - это метод, который, будучи описан в потомках, замещает собой соответствующий метод везде, даже в методах, описанных для предка, если он вызывается для потомка.
Виртуальные методы существуют для того, чтобы "наследник" вел себя отлично от "предка", сохраняя при этом свойство совместимости с ним.

Проиллюстрировать это можно так - пусть у нас есть два класса:

class Person
{
        virtual string name() const;
}; 
class Student: Person
{
        string name() const;
};

тогда мы получаем следующую совместимость:

Student s;
Person *p = &s ;
p->name(); //вызовется Student::name();
Person n;
p = &n;
p->name(); //вызовется Person::name()

то есть виртуальные методы являются важным инструментом реализации полиморфизма на практике.
Полезно ознакомиться с этим объяснением

ссылки по теме=
http://www.firststeps.ru/theory/oop/r.ph...
http://logic.pdmi.ras.ru/~smal/aptu/cpp1...