На рисунках 28, 29 представлен код, демонтстрирующий способы применения класса связного списка целочисленных значений в программе: явное объявление объектов связного списка, вызовы методов добавления, удаления, вставки элементов, применение операторов присваивания и индексирования и т.д. В таблице 2 приведены номера строк демонстрационного кода (см. рис. 28, 29), в которых осуществляются неявные вызовы конструктора копирования, деструктора или оператора присваивания.
На защите лабораторной работы необходимо продемонстрировать в режиме отладки (по примеру п.3.5.3) все случаи невного вызова специальных методов класса связного списка, описанные в таблице 2. При этом необходимо подробно объяснить, для какого объекта и в какой момент исполнения программы вызывается тот или иной метод.
Рис. 28. Демонстрация применения объектов класса связного списка
в коде программы (начало)
Рис. 29. Демонстрация применения объектов класса связного списка
в коде программы (продолжение)
Таблица 2
Перечень вызовов специальных методов класса связного списка | Вызовы деструктора |
| Явный вызов деструктора в функции CopyList, (в конструкторе копирования);
Неявный вызов деструктора локального объекта при выходе из функции PrintList | |||||
Вызовы конструктора копирования |
| Неявный вызов конструктора копирования для локального параметра функции PrintList | ||||||
Вызовы конструктора по умолчанию | Вызов конструктора по умолчанию |
| ||||||
Назначение | Объявление списка | Вывод списка на экран | ||||||
Функции и операторы, вызываемые в главной функции | List list1, list3, list4; | void PrintList(List list) | ||||||
Номер строки | 281 | 295, 302, 309, 316, 323, 326, 341, 344 | ||||||
Явный вызов деструктора в функции CopyList, (2 раза)
Неявный вызов деструктора для локального объекта при выходе из функции InputList, а также для временного объекта в стеке | Явный вызов деструктора при вызове функции CopyList | Явный вызов деструктора при вызове функции CopyList | ||||||
Неявный вызов конструктора копирования для возвращаемого значения функции InputList | Явный вызов конструктора копирования |
| ||||||
Вызов конструк-тора по умолчанию для локального объекта функции InputList |
|
| ||||||
Формирование списка с консоли | Формирование списка на основе существующего | Оператор присваивания | ||||||
list3 = InputList() | List list2 = list1 | list4 = list3 | ||||||
331 | 313 | 337 | ||||||