C

Страницы: <<  <  20 | 21 | 22 | 23  >  >>

именной функции базового класса, а не производного.
В языке C существует понятие чистых (pure) виртуальных функций. Такие функции используются в случае, когда в виртуальной функции базового класса отсутствует значимое действие. При этом в каждом производном классе от заданного класса такая функция должна быть обязательно переопределена.
Чистые виртуальные функции в базовом классе не определяются, вместо этого помещаются их прототипы со следующей формой записи:
virtual тип имяфункции (список параметров) 0;
Присвоение имени функции значения 0 указывает на отсутствие тела функции. При таком объявлении виртуальной функции в базовом классе в каждом производном классе должно выполняться ее переопределение, в противном случае при компиляции программы будет выявлена ошибка.
Рассмотренные нами статический и динамический варианты полиморфизма (перегрузка функций и использование виртуальных функции соответственно) соотносят с двумя следующими понятиями: раннее связывание и позднее связывание.
Раннее связывание касается событий этапа компиляции программы, таких как: настройка при вызове обычных функций, перегружаемых функций, невиртуальных компонентных функций и дружественных функций. При вызове перечисленных функций вся необходимая адресная информация известна при компиляции. Достоинством раннего связывания является высокое быстродействие получаемых выполнимых программ. Недостатком раннего связывания является снижение гибкости программ.
Позднее связывание касается событий, происходящих в процессе выполнения программы. При вызове функций с использованием позднего связывания адрес вызываемой функции до начала выполнения программы неизвестен. В частности, объектом позднего связывания являются виртуальные функции. При доступе к виртуальной функции чер

Страницы: <<  <  20 | 21 | 22 | 23  >  >>
Рейтинг
Оцени!
Поделись конспектом: