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



Автор Олюшка задал вопрос в разделе Другие языки и технологии

подскажите чем виртуальная функция отличается от обычной функции и получил лучший ответ

Ответ от Нуриев Нусрат[гуру]
Виртуальные и динамические методы не связаны с другими методами с тем
же именем в классах — наследниках. Если в классах — наследниках эти методы
перегружены, то при обращении к такому методу во время выполнения будет вы-
зываться тот из методов с одинаковыми именами, который соответствует классу
объекта, указанному при вызове. Например, если имеется базовый класс графиче
ских объектов TShape и ряд наследующих ему классов различных геометрических
фигур, и если в каждом из этих классов определен свой виртуальный метод Draw,
рисующий эту фигуру, то можно написать в программе:
var ShapeSrray: array[1..10] of TShape;
for i:=l to 10 do ShapeArray.Draw;
В этом коде в массив ShapeArray могут помещаться объекты разных классов,
наследующих TShape. В цикле for обращение к объектам производится как к объ-
ектам базового для них типа TShape. В этом случае для каждого объекта будет вы-
зываться виртуальный метод Draw именно этого объекта. Такой подход, облегчаю-
щий работу с множеством родственных объектов, называется полиморфизмом.
При объявлении в классе виртуальных и динамических методов после точки
с запятой, завершающей объявление метода, добавляются ключевые слова virtual
или dynamic. Например:
type
TShape = class
procedure Draw; virtual ;
end;
....
А вот ещё , если непонятно:
Источник: Архангельский - программирование в Delphi

Ответ от Denis[гуру]
наверное тем что виртуальная принадлежит классу а простая и без класса может быть (хотя я точно не помню)

Ответ от Fekla deineka[гуру]
Если под "обычной функцией" имеется в виду функция-член класса, то различие в следующем:
- виртуальная функция может быть переопределена в классе-наследнике, при вызове функции объектом этого класса-наследника будет вызвана именно эта переопределенная функция (если она не переопределена, то вызывается функция базового класса)
- функция, не объявленная как виртуальная, не может быть переопределена в классе-наследнике. Даже если ее там переопределить, при вызове все равно будет вызываться функция базового класса.

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

Виртуальное наследование С++
Виртуальную функцию надо определять, если нет ее реализации по умолчанию (в базовом классе она
подробнее...

Расскажите, для чего вобще нужны Виртуальные методы?
Читай:

Виртуальный метод (виртуальная функция) — в объектно-ориентированном
подробнее...

как понять слово демо версия
Демонстрационная версия, демоверсия [1], демо-версия [2] (или просто демо) , пробная версия —
подробнее...
спросили в C Sharp
В чем отличие С++ от С, С#, и С#.Net и какое отношение к ним имеет Sharp
С это подмножество С++. То есть изучив С++ вы должны без проблем понимать С.

Грубо
подробнее...

что такое программный интерфейс?
Программный интерфейс, аналогичную любому другому интерфейсу, выполняет роль связующего звена между
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:

C++ массив array в классе
У массива это не список инициализации!

std::vector<int> v({1,2,3,4,5}); //
подробнее...

для чего нужны виртуальные функции в C+/+?
Современные программы могут насчитывать десятки тысяч классов, которые связаны между собой
подробнее...
спросили в Danamon Open
C++ VS 2010 CFile читать файл!
CFile F1;
F1. Open( L " text. dat " , CFile : : modeCreate | CFile : : modeReadWrite ) ;
подробнее...

Виртуальные функции в c#,зачем они?
override означает перекрывание одноименного метода/свойства класса-потомка. по сути замена этим
подробнее...

Проблема с виртуальным компом VMware после переноса его с одной машины на другую ...далее
смотря что копировал. если это обычный виртуальный комп (не виртуальная сеть из компов) юзай
подробнее...
спросили в Функции Функциями
Как пользоваться таблицей интегральной функции Лапласа?
Таблицами значений интегральной функции Лапласа нынче никто не пользуется. Вместо этого тупо
подробнее...

Как с помощью CLONE CD 4.2.0.2 можно создать виртуальный диск?
ты бы ещё в винде эту функцию искал, клоне сд как и двд просто копируют диски или в образ иди на
подробнее...

Функция mail php
у многих хостеров использование этой функции отключено, уточните у
подробнее...

Как работает виртуальный деструктор? что это? С++
деструктор осфобождает память, занимаемую тем или иным объектом и вызывается по окончанию функции,
подробнее...
Виртуальный метод на Википедии
Посмотрите статью на википедии про Виртуальный метод
 

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

Имя*

E-mail:*

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