2010-11-21 2 views
4

Что такое виртуальный метод в C++?Что такое виртуальный метод в C++?

+3

попробуйте поиск .... –

+3

@Mitch Wheat; Я согласен с вами, поскольку такой фундаментальный вопрос следует исследовать, а не спрашивать небрежно, особенно без контекста. – BeemerGuy

+1

Возможный дубликат [Может кто-нибудь объяснить C++ Virtual Methods?] (Http://stackoverflow.com/questions/2391679/can-someone-explain-c-virtual-methods) –

ответ

6

Виртуальная функция позволяет производным классам заменять реализацию, предоставляемую базовым классом. Компилятор гарантирует, что замена всегда вызывается всякий раз, когда объект, о котором идет речь, фактически относится к производному классу, даже если к объекту обращается базовый указатель, а не производный указатель. Это позволяет заменить алгоритмы в базовом классе в производном классе, даже если пользователи не знают о производном классе.

Производный класс может либо полностью заменить («переопределить») функцию элемента базового класса, либо производный класс может частично заменить («дополнять») функцию-член базового класса. Последнее выполняется с помощью функции-члена производного класса, если нужно, использовать функцию-член базового класса.

Подробнее здесь:

http://www.codersource.net/c/c-tutorials/c-virtual-function.aspx

Однако это очень простой. Попробуйте Google в следующий раз, прежде чем приходить сюда, чтобы спросить!

0

Это метод, который рассматривается во время выполнения вместо времени компиляции. Это позволяет работать в таких ситуациях, как полиморфизм.

+1

vtables - это деталь реализации. В стандарте C++ ничего не говорится о «vtables». – fredoverflow

+0

@FredOverflow: Из любопытства, какие реализации не используют vtable? –

+1

Большинство практических реализаций имеют тенденцию использовать vtable, по крайней мере, насколько я знаю. Но Фред делает правильную точку - вопрос спрашивает, что такое виртуальный метод на C++, где C++ - это язык, определенный его стандартом. Интересен тот факт, что реализация может использовать vtable, но это не прямой ответ на поставленный вопрос. –

Смежные вопросы