Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Инициализация объекта порожденного классаДля инициализации порожденных классов, также как и для обычных классов используются конструкторы. Поскольку конструкторы не наследуются, то при создании производного класса наследуемые им данные-члены должны инициализироваться конструктором базового класса. Конструктор базового класса вызывается автоматически и выполняется до конструктора производного класса. Параметры конструктора базового класса указываются в определении конструктора производного класса. Таким образом, происходит передача аргументов от конструктора производного класса конструктору базового класса. Пример. Рассмотрим конструктор класса student. // конструктор без параметров, обнуляющий данные class student { char FIO[20]; // ФИО студента char gr[10]; // Группа студента float reit; // Рейтинг студента public: student () { FIO=””; gr=””; reit=0; } // конструктор с тремя параметрами student (char *initFIO, char *initGr, float initReit) { strcpy(FIO, initFIO); strcpy(gr, initGr); reit=initReit; } }; В производном классе magistr будем инициализировать только специальность и номер телефона. Так как при инициализации объекта производного класса требуется вызвать конструктор базового класса, то конструктор производного класса будет иметь не два, а пять параметров. Пример. class magistr: public student { char spec[30]; int tel; public: magistr () { spec=””; tel=0; } // конструктор с тремя параметрами magistr (char *initFIO, char *initGr, float initReit, char *initSpec, int initTel): student(initFIO, initGr, initReit) { strcpy(spec, initSpec); tel=initTel; } }; Инициализация объекта производного класса происходит в следующем порядке: - выполняется конструктор базового класса; - если производный класс содержит объекты других классов, то инициализируются они; - выполняется конструктор порожденного класса. Таким образом, объект производного класса содержит в качестве подобъекта объект базового класса. Уничтожаются объекты в обратном порядке: сначала производный, потом его компоненты-объекты, а потом базовый объект.
|