Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LabOOPti.doc
Скачиваний:
12
Добавлен:
15.03.2016
Размер:
127.49 Кб
Скачать

Абстрактные классы. Виртуальные деструкторы

Подготовка к работе. По указанной литературе и конспекту лекций повторить темы «Полиморфизм», «Абстрактные классы», «Виртуальные деструкторы».

Разработать программу в соответствии с заданием к лабораторной работе.

Задание.

1. Используя систему классов, созданную в работах №7 и №8, модифицировать выбранный в работе №8 базовый класс, так, чтобы его функция вывода данных стала чистой виртуальной.

2. Во всех классах, входящих в иерархию, сделать деструкторы виртуальными.

3. В функции main() создать объекты всех производных от абстрактного классов и указатель на указатель на абстрактный базовый класс.

4. Используя указатель, созданный в п.3, создать динамический массив указателей на базовый класс. Размер массива должен быть достаточным для хранения адресов всех созданных в п.3 объектов.

5. Каждому элементу массива указателей присвоить адрес одного из объектов производных классов.

6. Вызвать для каждого элемента массива указателей виртуальную функцию. Сделать выводы.

7. Удалить динамический массив указателей. Проконтролировать работу виртуальных деструкторов. Сделать выводы.

Контрольные вопросы.

  1. Что такое полиморфизм?

  2. Что такое абстрактный класс? Для чего он нужен?

  3. Что такое абстрактная функция?

  4. Почему деструкторы абстрактных классов должны быть виртуальными?

  5. Могут ли быть виртуальные конструкторы?

  6. Могут ли существовать самостоятельные объекты абстрактных классов?

  7. Могут ли существовать указатели на объекты абстрактных классов?

  8. Как реализуется полиморфизм в программах?

  9. Могут ли абстрактные функции вызываться из обычных функций класса?

  10. Могут ли обычные функции класса вызываться из абстрактных функций?

  11. Когда могут использоваться указатели на объекты абстрактных классов?

  12. В каких отношениях находятся между собой полиморфизм, наследование и инкапсуляция?

  13. Каковы преимущества от реализации полиморфизма при разработке программ?

  14. Для каких программных объектов могут вызываться виртуальные функции?

  15. Для каких программных объектов должны вызываться виртуальные функции, чтобы реализовывался полиморфизм?

16

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]