Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Рубанчик В. Б. |
Лабораторная №9 Исследования механизма множественного наследования. |
2/2 |
ЗАДАНИЕ 1 (Конструкторы)
Класс Derived является производным (public) от классов Base1 и Base2. Каждый из трех классов имеет по два конструктора, которые (кроме описанных ниже действий) выводят сообщение о вызове типа "Конструктор Base2 без параметров".
Класс Base1, имеет одно закрытое поле i целого типа. Первый конструктор не имеет параметров и обнуляет i. Второй имеет один параметр типа int, используемый для инициализации i произвольными значениями. Класс имеет две общедоступные интерфейсные функции void put(int) и int get(void), которые позволяют изменить или прочесть значение i.
Класс Base2, имеет одно закрытое поле - массив name из 20 элементов. Первый конструктор не имеет параметров и инициализирует поле name словом "Пусто". Второй имеет один параметр типа char*, используемый для инициализации name значениями символьных строк. Класс имеет две общедоступные интерфейсные функции void put(char*) и char* get(void), которые позволяют изменить или прочесть значение name.
Класс Derived имеет одно закрытое поле ch типа char. Первый конструктор не имеет параметров и присваивает ch значение 'V' (от void - пустой). Второй конструктор имеет три параметра типов char, char* и int, используемые для инициализации соответственно полей ch, name и i. Класс имеет две общедоступные интерфейсные функции void put(char) и char get(void), которые позволяют изменить или прочесть значение ch. Кроме того, в нем объявляется как дружественная операция вставки в поток вывода, которая выводит на экран значения i, name и ch.
ЗАДАНИЕ 2 (Виртуальные базовые классы)
Задан базовый класс DomesticAnimal (домашнее животное), в котором определены три защищенных поля weight (вес), price (цена) и color (окраска). Класс снабжен конструктором без параметров и конструктором с тремя параметрами для инициализации полей трех класса. Кроме того определена функция print, выводящая значения полей и сообщение о принадлежности функции к классу DomesticAnimal.
Производными от этого класса (public) являются классы Cow (корова) и Buffalo (бык), в которых не определено новых полей.
Класс Beefalo (теленок) является производным (public) от Cow и Buffalo. Его конструктор инициализирует поля weight, price и color без передачи параметров своим базовым классам Cow и Buffalo.
Классы Cow, Buffalo и Beefalo имеют свои функции print, которые выводят сообщения о своей принадлежности к конкретному классу и выводят значения трех полей с помощью вызова print из DomesticAnimal.