виртуальная функция в c



Виртуальная функция

Автор Измайлов Кирилл задал вопрос в разделе Другие языки и технологии

для чего нужны виртуальные функции в C+/+? и получил лучший ответ

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

Ответ от A//x[гуру]
Наверное для экспериментов.. (ИМХО))

Ответ от Алексей[активный]
На википедии вполне приличная статья на эту тему
Общая суть - в том, если у тебя класс Б наследует у класс А, и есть указатель типа А*, который указывает на объект класса Б, то при обращении к функции, если она виртуальна - то ты выполнится функция класса Б, а иначе - функция класса А.

Ответ от Марина Цветочная[гуру]
Для полиморфизма. Один интерфейс -- множество методов.

Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: для чего нужны виртуальные функции в C+/+?
Виртуальный метод на Википедии
Посмотрите статью на википедии про Виртуальный метод
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*