Спецификатор virtual используется для объявления виртуальных функций, реализующих свойство полиморфизма родственных классов, или виртуальных базовых классов.Виртуальные функции — это функции-члены, которые объявляются в базовом классе, а затем переопределяются в производных классах. Если функция объявлена виртуальной в базовом классе, она автоматически определяется как виртуальная во всех производных классах, поэтому ключевое слово virtual в производных классах применять уже не надо.