Виртуальная функция
Автор Измайлов Кирилл задал вопрос в разделе Другие языки и технологии
для чего нужны виртуальные функции в C+/+? и получил лучший ответ
Ответ от Modern Иванов[гуру]
Современные программы могут насчитывать десятки тысяч классов, которые связаны между собой наследованием. Например, в каждой есть ф-ция void Show() ,которая выводит на экран информацию о классе при каком то событии. Как ты выберешь нужную? Напишешь 30000 раз if-else?Вот для такой ситуации и пригодится механизм виртуальных ф-ций. В базовом классе определяется, что ф-ция Show() виртуальная. Для каждого наследуемого класса пишется её реализация. Теперь в программе можно вызвать ф-цию через указатель или по ссылке на базовый класс. Не нужны указатели на каждый производный класс. В момент выполнения, программа сама определяет, какую версию ф-ции вызвать.
void FuncAllShow(Base &ob)
{
ob.Show();
}
Теперь в процессе выполнения программы ссылку на какой бы мы класс не передали, вызовется Show() этого класса. Если для класса не переоределена ф-ция, то вызовется реализация для базового класса. (Если ф-ция не чисто виртуальная).
Наверное для экспериментов.. (ИМХО))
На википедии вполне приличная статья на эту тему
Общая суть - в том, если у тебя класс Б наследует у класс А, и есть указатель типа А*, который указывает на объект класса Б, то при обращении к функции, если она виртуальна - то ты выполнится функция класса Б, а иначе - функция класса А.
Для полиморфизма. Один интерфейс -- множество методов.
подскажите чем виртуальная функция отличается от обычной функции
Виртуальные и динамические методы не связаны с другими методами с тем
же именем в классах —
подробнее...
Виртуальное наследование С++
Виртуальную функцию надо определять, если нет ее реализации по умолчанию (в базовом классе она
подробнее...
Расскажите, для чего вобще нужны Виртуальные методы?
Читай:
Виртуальный метод (виртуальная функция) — в объектно-ориентированном
подробнее...
как понять слово демо версия
Демонстрационная версия, демоверсия [1], демо-версия [2] (или просто демо) , пробная версия —
подробнее...
В чем отличие С++ от С, С#, и С#.Net и какое отношение к ним имеет Sharp
С это подмножество С++. То есть изучив С++ вы должны без проблем понимать С.
Грубо
подробнее...
что такое программный интерфейс?
Программный интерфейс, аналогичную любому другому интерфейсу, выполняет роль связующего звена между
подробнее...
C++ массив array в классе
У массива это не список инициализации!
std::vector<int> v({1,2,3,4,5}); //
подробнее...
C++ VS 2010 CFile читать файл!
CFile F1;
F1. Open( L " text. dat " , CFile : : modeCreate | CFile : : modeReadWrite ) ;
подробнее...
Виртуальные функции в c#,зачем они?
override означает перекрывание одноименного метода/свойства класса-потомка. по сути замена этим
подробнее...
Расскажите, пожалуйста, преимущество основных (популярных) языков программирования.
Вам что, все языки сравнивать между собой? Напишите 2-3
подробнее...
Проблема с виртуальным компом VMware после переноса его с одной машины на другую ...далее
смотря что копировал. если это обычный виртуальный комп (не виртуальная сеть из компов) юзай
подробнее...
Как пользоваться таблицей интегральной функции Лапласа?
Таблицами значений интегральной функции Лапласа нынче никто не пользуется. Вместо этого тупо
подробнее...
Как с помощью CLONE CD 4.2.0.2 можно создать виртуальный диск?
ты бы ещё в винде эту функцию искал, клоне сд как и двд просто копируют диски или в образ иди на
подробнее...
Как работает виртуальный деструктор? что это? С++
деструктор осфобождает память, занимаемую тем или иным объектом и вызывается по окончанию функции,
подробнее...