Обсуждение вопросов, связанных с компанией Microsoft, ее продуктами MS SQL Server, MS Windows, MS Office и др.
В первой части серии статей, посвященной виртуальным функциям в C++, попытаемся разобраться в общей теории виртуальных функций.
Автор:
Diter
|
Дата: 13.07.2007 21:28 |
|
Цитата:
"...Причем применять ключевое слово virtual совсем необязательно, поскольку это конечный класс в линии наследования. Функция и так будет работать и выбираться как виртуальная. Но! А вот если вам приспичит вывести некий класс D из класса С, да еще и изменить поведение функции v_function(), то <b>тут как раз ничего и не выйдет</b>. Для этого в классе С функция v_function() должна быть объявлена, как virtual. Отсюда правило, которое можно сформулировать так: "единожды виртуальный - всегда виртуальный!". То есть, ключевое слово virtual лучше не отбрасывать - вдруг пригодится?"
Автор не совсем понял фразу "единожды виртуальный - всегда виртуальный". Это означает, что если мы объявили функцию виртуальной однажны в базовом классе, то она будет виртуальной для всей иерархии потомков всегда, не важно будем ли мы писать ключевое слово virtual или нет. Просто это удобно для разработчика - всегда видеть, что функция виртуальная, а не лезьть в базовый класс для проверки. |
Ответить на сообщение » |