Подготовительный курс по C++ разработке (Виртуальные функции и абстрактные классы) Урок 14 ч.2

Автор Ruslana Chernenko
Подготовительный курс по C++ разработке (Виртуальные функции и абстрактные классы) Урок 14 ч.2

Всем привет дорогие друзья сегодня мы с вами продолжим тему предыдущего занятия, а именно.

Продолжим разговор про виртуальные функции поговорим чисто виртуальные функции абстрактные также обсудим само понятие полиморфизма и споры вокруг него так наследование виртуальных функций атрибут выручил передаётся по наследству функция объявляется как виртуальная она остаётся такой независимо от того через. Сколько уровней производных классов она может пройти давайте рассмотрим предыдущий пример из класса Second был выведен из класса ферзи они из класса Bass как показано в следующем примере. Канаше функциях у по-прежнему оставалась виртуальной и.

Механизм соответствующий версии по-прежнему.

Работал бы корректным стоит отметить, что если производной не переопределяет виртуальную функцию то используется функция определенная в базовом классе стоит помнить, что наследуемые свойства спецификатор вручил его эротическими. Поэтому если наш пример изменить так чтобы класс. Секонд был выведен из класса 3D они из класса. Баста при обращении функции Who объект типа Second будет вызвано таю версия которая объявлено в классе. Форрест поскольку этот класс является ближайшим по иерархии классов Second. А я эстела класса баз. И зачем же нужны виртуальные функции как я уже говорил виртуальные функции в сочетании с производными типами позволяют поддерживать динамический полиморфизм полиморфизм очень важен для объектно-ориентированного так как он обеспечивает возможность некотором обобщенному классу определять функции которые будут использовать все производные от него классы причём производный класс может определить собственную реализацию этих функций иногда эта идея выражается следующим образом базовый класс диктует общий интерфейс который будет иметь. Любой объект из этого класса, но позволяет при этом производному классу определить метод используемый для реализации этого интерфейса. Вот почему для описания полиморфизма часто используется та самая фраза один интерфейс на много методов для успешного применения полиморфизма необходимо понимать, что базовые и производные классы образуют и развитие которой направлена от большей к меньшей степени обобщения то есть от базового крае при корректный разработки базовый класс обеспечивает все элементы которые производный класс может использовать напрямую он также определяет функции который должен реализовать самостоятельно — это дает производному классу гибкость в определении собственных методу, но в тоже время обязывает использовать общий интерфейс словами поскольку формат интерфейса определяется базовым классом любой производный класс должен разделять этот общий интерфейс. Таким образом у нас получается, что из виртуальных функций позволяет базовому классу определять обобщенный интерфейс который будет использован всеми производными классами. Теперь может возникнуть несколько вопросов почему же так важен этот самый общий интерфейс множество реализаций ответ достаточно прост общий интерфейс позволяет программисту справляться с такой возрастающей сложностью программ ну к примеру если корректно разработать программу то можно быть уверенным в том, что ко всем объектам выведенными из базового класса можно будет получить доступ в. Едином то есть общим для всех способов. Несмотря на то, что конкретно. Е1 производного класса могут отличаться от действие другого — это значит, что нам с вами придётся помнить только один лишь интерфейса они огромное множество. Кроме того производный класс использовать любые или все функции предоставленные базовым классом другими словами разработчику производного класса не нужно заново изобретать элементы которые уже имеются в базовом классе более того отделение интерфейса от реализации позволяет создавать библиотеке написание которых могут заниматься вообще сторонние организации корректно реализованы библиотеки должны предоставлять общий интерфейс который программист может использовать для классов в соответствии со своими конкретными потребностями. Ну например как библиотека базовых классов Microsoft или более новых классов NET Framework Windows forms поддерживает Windows программирование использование этих классов позволяет писать программы которые могут быть унаследованы множество функций нужных любовь Windows программе соответственно нужно лишь добавить в него средства уникальный для нашего с вами предложения и соответственно — это является большим подспорьем программирование сложных больших систем. Теперь мы с вами обсудим чисто виртуальная функция eof класса как уже было сказано если виртуальная функция которой не определено производном классе вызывается объектом этого производного класса то используется версия. Определи базовым, но во многих случаях вообще нет смысла давать определение виртуальной функции в базовом классе таким образом если виртуальная функция пустая то она может использоваться как они заглушка она ничего не вычисляет абсолютно ничего не отображает и при создании собственных библиотек классов в том, что виртуальная функция не имеет знающего определение контексте базового класса в общем-то нет. Ничего необычного чисто виртуальная функция — это такая функция которая не имеет определение базовом классе виртуальная функция. Существует два способа обработки таких ситуаций в первый заключается в обеспечении функций.

0 комментариев
0

Читайте также