Лабораторная работа №7. Тема: “Полиморфизм и виртуальные функции”

Тема: “Полиморфизм и виртуальные функции”

Полиморфизм – это механизм, позволяющий использовать один и тот же интерфейс для объектов базовых и производных классов. В С++ полиморфизм реализуют с помощью виртуальных функций.

Виртуальная функция (virtual function) является функцией-членом класса. Она объявляется внутри базового класса и переопределяется в производном классе.

Виртуальная функция объявляется при помощи спецификатора virtual, указываемого перед типом возвращаемого функцией значения. После того, как Вы объявили функцию виртуальной, ее можно переопределить только в производном классе. Замещающие функции должны иметь тот же список параметров.

Когда в виртуальной функции базового класса отсутствует значимое действие, в реализации любого производного класса эта функция обязательно должна переопределяться. Для реализации этого положения в С++ поддерживаются чисто виртуальные функции (pure virtual function). Для чисто виртуальных функций используется такая общая форма прототипа:

virtual type Name (parameters) = 0;

Ключевым моментом этого объявления является приравнивание функции нулю. Это сообщает компилятору, что в базовом классе не существует тела функции.

Если класс содержит хотя бы одну чисто виртуальную функцию, то о нем говорят как об абстрактном классе. Абстрактный класс может быть только наследуемым, поскольку в нем содержится, по крайней мере, одна функция, у которой отсутствует тело, то есть нельзя создавать объекты такого класса.

Если объявляется указатель на объект, то при использовании перегрузки функций, типуказателя определяет, из какого класса вызывается функция. При использовании виртуальных функций, класс вызываемой функции определяется не по типу указателя, а по типу объекта, адрес которого хранит этот указатель.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: