Пример множественного наследования
Отчёт должен быть распечатан на листах А4 с использованием стандартных рамок. Отчёт должен содержать: Ø номер лабораторной работы; Ø тему лабораторной работы; Ø номер варианта; Ø общие требования к лабораторной работе; Ø тематические требования к лабораторной работе; Ø индивидуальное задание; Отчёт должен содержать код программы в следующем порядке: Ø интерфейсы классов (файлы *.h); Ø реализация классов (файлы *.cpp); Ø тело функции main (). Отчёт должен содержать результат работы вашей программы. Отчёт должен содержать выводы. В выводах вы перечисляете синтаксические приемы, которые были использованы вами при разработке программы.
ЛЕКЦИЯ 6 МНОЖЕСТВЕННОЕ НАСЛЕДОВАНИЕ______________________________________________ 1 Работа конструктора и деструктора___________________________________________________________ 1 Пример множественного наследования________________________________________________________ 1 Виртуальные базовые классы________________________________________________________________ 3 МНОЖЕСТВЕННОЕ НАСЛЕДОВАНИЕ Если у производного класса имеется несколько базовых классов, то говорят о множественном наследовании. Множественное наследование позволяет сочетать в одном производном классе свойства и поведение нескольких классов. Работа конструктора и деструктора Рассмотрим пример, который демонстрирует порядок вызова конструкторов и деструкторов базовых классов. #include <iostream.h> // базовый класс Class Base1 { public:
Base1 () { cout <<"Constructor Base1 \n"; } ~Base1 () { cout <<"Destructor Base1 \n"; } } Class Base2 { public:
Base2 () { cout <<"Constructor Base2 \n"; } ~Base2 () { cout <<"Destructor Base2 \n"; } }
Class Derived: public Base1, public Base2
cout <<"Constructor Derived \n";} cout <<"Destructor Derived \n"; }
// создание объекта производного класса Эта программа выводит на экран следующее: Constructor Base1 Constructor Base2 Constructor Derived Destructor Derived Destructor Base2 Destructor Base1 Этот пример наглядно демонстрирует, что конструкторы базовых классов вызываются в порядке их объявления. Деструкторы вызываются в обратном порядке. Пример множественного наследования Класс вектора, приведённого в предыдущей лекции, имеет небольшой недостаток. Мы зарезервировали для имени вектора строку длиной три байта, которая может хранить два символа (третий – нуль-терминатор). Если пользователь создаст объект вектора и передаст конструктору в качестве имени строку, состоящую из трёх или более символов, то имя вектора будет некорректно отображаться на экране. Задачу можно решить путём отсечения лишних символов. Может оказаться целесообразным решать эту задачу в отдельном абстрактном классе имени, а класс вектора унаследует данные и методы этого класса. Класс имени Name хранит строку из двух символов и обеспечивает её корректный ввод и вывод. Объектно-ориентированное программирование Лекция 6 Множественное наследование
|