Виртуальная функция
Автор Измайлов Кирилл задал вопрос в разделе Другие языки и технологии
для чего нужны виртуальные функции в C+/+? и получил лучший ответ
Ответ от Modern Иванов[гуру]
Современные программы могут насчитывать десятки тысяч классов, которые связаны между собой наследованием. Например, в каждой есть ф-ция void Show() ,которая выводит на экран информацию о классе при каком то событии. Как ты выберешь нужную? Напишешь 30000 раз if-else?Вот для такой ситуации и пригодится механизм виртуальных ф-ций. В базовом классе определяется, что ф-ция Show() виртуальная. Для каждого наследуемого класса пишется её реализация. Теперь в программе можно вызвать ф-цию через указатель или по ссылке на базовый класс. Не нужны указатели на каждый производный класс. В момент выполнения, программа сама определяет, какую версию ф-ции вызвать.
void FuncAllShow(Base &ob)
{
ob.Show();
}
Теперь в процессе выполнения программы ссылку на какой бы мы класс не передали, вызовется Show() этого класса. Если для класса не переоределена ф-ция, то вызовется реализация для базового класса. (Если ф-ция не чисто виртуальная).
Наверное для экспериментов.. (ИМХО))
На википедии вполне приличная статья на эту тему
Общая суть - в том, если у тебя класс Б наследует у класс А, и есть указатель типа А*, который указывает на объект класса Б, то при обращении к функции, если она виртуальна - то ты выполнится функция класса Б, а иначе - функция класса А.
Для полиморфизма. Один интерфейс -- множество методов.