При выборе между виртуальными и статическими методами надо иметь ввиду, что статические методывызываются значительно проще и быстрее. Кроме того, они экономят память, т.к. их адреса не запоминаются в таблице виртуальных методов во время исполнения.
При программировании виртуальных методов вас ждут подводные камни. С другой стороны, иметь, например, виртуальный деструктор очень удобно. Ведь иерархия классов может быть весьма сложна, а задача деструктора остается логически схожей.
Повторим основания для объявления метода виртуальным и правила, по которым выполняется такое объявление. Виртуальными следует делать методы общие для иерархического семейства классов, причем только те из них, которые для различных классов этого семейства могут отличаться. Виртуальность необходима только в том случае, когда некоторая ссылка на базовый класс используется для работы с объектами разных дочерних классов. При этом трудно обеспечить вызов необходимых статических методов, виртуальные же методы будут вызываться по фактическому классу объекта.
Чтобы сделать метод виртуальным, необходимо в базовом классе объявить его с дескриптором virtual, а во всех дочерних классах — с дескриптором override. Во всех объявлениях имя метода и список его формальных параметров должны оставаться неизменными.
Опубликовал Kest
June 14 2011 10:46:45 ·
0 Комментариев ·
9266 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.