![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Очень часто виртуальная функция, объявленная в базовом классе, никогда не используется в нём, то есть она представляется в виде пустой функции ({ }).
Версия виртуальной функции, которая должна быть определена, но никогда не будет использоваться, должна быть объявлена как чисто виртуальная:
Virtual тип имя_функции (список параметров) =0;
При выполнении в программе число виртуальной функции генерируется сообщение об ошибке и программа аварийно завершается (при работе пустой функции этого не происходит).
Класс с одной или большим количеством чисто виртуальных функций называется — абстрактным. Правила языка С++ запрещают использование таких классов, они могут использоваться только как базовые для создания других классов. Это происходит потому, что одна или несколько функций для объектов этого класса не имеют определения. Данная ситуация используется для обнаружения ошибок создания фиктивных объектов при помощи компилятора.
Рекомендации:
§ Используйте абстрактные типы данных для создания для создания общего интерфейса для всех производных классов.
§ Обязательно замещайте в произвольных классах чистые виртуальные функции.
§ Объявляйте все функции, которые требуют замещения в произвольном классе как виртуальные.
§ Не пытайтесь создать объект абстрактного класса.
Лекция № 11. Статические переменные. Шаблоны функций и классов. Связные списки.
Дата публикования: 2014-11-28; Прочитано: 220 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!