На этом шаге мы приведем пример программы с использованием наследуемых классов.
Рассмотрев основные принципы работы деструкторов при наследовании, приведем программу для работы с объектами класса star:
//OOP25_1.СРР - наследование классов и их деструкторы. #include "star.cpp" // Определение класса star. void main () { star A(5,7,4); // Создается невидимая звезда A. star D(38,12,3); // Создается невидимая звезда D. A.show(); // Изобразить звезду A на экране. getch(); // Ждать нажатия клавиши. D.show(); // Изобразить звезду D на экране. getch(); A.move(10,15); // Переместить звезду A. getch(); D.vary(3); // Изменить размер лучей звезды D. getch (); // Ждать нажатия клавиши. }
Обратите внимание на то, что после выполнения последней функции getch(); все звезды исчезают с экрана. Это объясняется тем, что при уничтожении объектов A и D автоматически вызываются их деструкторы, которые содержат обращение к функции hide(), осуществляющей "скрытие" звезды.
Изменим последнюю программу, добавив в нее блок, в котором создадим звезду C:
//OOP25_2.СРР - наследование классов и их деструкторы. #include "star.cpp" // Определение класса star. void main () { star A(5,7,4); // Создается невидимая звезда A. star D(38,12,3);// Создается невидимая звезда D. A.show(); // Изобразить звезду A на экране. getch(); // Ждать нажатия клавиши. D.show(); // Изобразить звезду D на экране. getch(); { star C(13,13,2); C.show(); getch(); } //Объект C автоматически удален!!! A.move(10,15); // Переместить звезду A. getch(); D.vary(3); // Изменить размер лучей звезды D. getch (); // Ждать нажатия клавиши. }
Обратите внимание на то, что после выхода из блока звезда C исчезнет с экрана, то есть этот объект будет автоматически уничтожен! Этот факт объясняется тем, что объект C был создан в блоке, поэтому его "время жизни" ограничено этим блоком!
Со следующего шага мы начнем рассматривать множественное наследование.