Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основные понятия объектно.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
29.11 Кб
Скачать

Множественное наследование

Это способность одного класса наследовать характеристики более чем одного базового класса. Если производный класс наследует характеристики более чем одного базового класса, то имена базовых классов разделяются запятыми. Если при определении производного класса применяется множественное наследование, то производный класс должен вызвать функцию - конструктор для каждого базового класса. Порядок вызываемых конструкторов зависит от порядка, в котором заданы базовые классы. Сначала вызывается деструктор производного класса, а затем деструкторы базового класса в обратном порядке. Если какое-либо имя члена класса в производном классе совпадает с именем члена в одном или нескольких базовых классах, то выбирается члена производного класса. Для решения конфликта имен базового и производного классов следует использовать оператор ::.

8. Виртуальные функции и полиморфизм

Чтобы объявить функцию-член Print() виртуальной функцией в базовом классе, а затем переопределить ее в каждом производном классе, нужно использовать слово virtual. Если функция уже однажды была объявлена виртуальной, то она остается таковой на любом более низком уровне иерархии. Если в производном классе виртуальная функция не описывается, то производный класс непосредственно наследует описание виртуальной функции из базового класса. Переопределенная виртуальная функция должна иметь тот же самый тип возвращаемого значения, а также количество, тип и последовательность передаваемых в переопределенную виртуальную функцию значений, что и у виртуальной функции базового класса, иначе возникнет синтаксическая ошибка. Если функция print() через указатель базового класса на объект производного класса, то программа будет динамически выбирать соответствующую функцию print() производного класса. это называется динамическим или поздним связыванием. если виртуальную функцию вызвать путем обращения к заданному объекту по имени и с использованием операции доступа к элементу точка, то такая ссылка обрабатывается на этапе компиляции. Это называется статическим связыванием. В качестве вызываемой функции определяется функция класса данного объекта или наследуемая этим классом функция.

Полиморфизм

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

12.Компановка нескольких файлов в одну программу.

программа- текст на языке С++ с помощью компилятора преобразуется с исполняемый файл. Обработка исходных файлов проходит в 3 этапа:

1) Обработка файлов препроцессором, который выполняет операторы 2 include, #define и некоторые другие.

2)Компилятор создает так называемый объектный файл. В объектном файле имеются ссылки на системные и стандартные функции.

3)К объектному файлу подсоединяются все функции, на которые он ссылается. Функции должны быть скомпилированы, т.е. переведены на машинный язык в форму объектных файлов. Этот процесс называется компановкой и его результат - исполняемый файл.

Использование включаемых файлов.

Текст программы помещается в файлы двух типов - файлы заголовков и файлы программ. В большинстве случаев имеет смысл каждый класс помещать в отдельный файл, вернее 2 файла - файл заголовков для объявления класса и файл программ для определения класса. Имя файла обычно состоит из имени класса. Для файла заголовков к нему добавляется расширение .h.Имя файла программы- опять имя класса с расширением .cpp. Объединить несколько классов в один файл стоит лишь в том случае, ели они тесно связаны друг с другом и один без другого не используется. Включение файлов может быть вложенным, т.е. файл заголовков может сам использовать оператор #include. Операторы #ifndef и #endif составляют блок так называемой условной компиляции- это кусок текста, который будет компилироваться, только если выполнено определенное условие. Первым оператором в блоке условной компиляции стоит оператор #define.

Препроцессор

Имеются несколько операторов, которые начинаются с знака #. все они обрабатываются препроцессором: #include, #define,# undef, #ifdef и т.д.