Конференция "Microsoft"

Обсуждение вопросов, связанных с компанией Microsoft, ее продуктами MS SQL Server, MS Windows, MS Office и др.

 
 
Добавить сообщение »

Тема: Обсуждение материала "Виртуальные функции. Что это такое? Часть 1"

В первой части серии статей, посвященной виртуальным функциям в C++, попытаемся разобраться в общей теории виртуальных функций.

Автор:  Diter Дата: 13.07.2007 21:28
Цитата:

"...Причем применять ключевое слово virtual совсем необязательно, поскольку это конечный класс в линии наследования. Функция и так будет работать и выбираться как виртуальная. Но! А вот если вам приспичит вывести некий класс D из класса С, да еще и изменить поведение функции v_function(), то <b>тут как раз ничего и не выйдет</b>. Для этого в классе С функция v_function() должна быть объявлена, как virtual. Отсюда правило, которое можно сформулировать так: "единожды виртуальный - всегда виртуальный!". То есть, ключевое слово virtual лучше не отбрасывать - вдруг пригодится?"

Автор не совсем понял фразу "единожды виртуальный - всегда виртуальный". Это означает, что если мы объявили функцию виртуальной однажны в базовом классе, то она будет виртуальной для всей иерархии потомков всегда, не важно будем ли мы писать ключевое слово virtual или нет. Просто это удобно для разработчика - всегда видеть, что функция виртуальная, а не лезьть в базовый класс для проверки.
Ответить на сообщение »
 

Добавить сообщение »
Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/iservices/messages.asp?forumId=590&topicId=368