Глава 18. Классы-контейнеры _____ ______________________435
^include <iostream.h>
#include <iomahip.h> ttinclude <classlib\arrays.h>
#include "studentl.h"
#define true 1 ftdefine false 0
typedef TIArrayAsVector<STUDENT> STUDENT_LIST;
// Функция для вывода статуса принадлежности void WriteOwnership(STUDENT_LIST&) ;
int main() { • •.
STUDENT_LIST studentList(5, 0, 5);
studentList.Add(new STUDENT("STUDENTI", 1.0)5;
studentList.Add(new STUDENT("STUDENT2", 2.0));
studentList.Add(new STUDENT("STUDENTS", 3.0));
cout « "Default ownership: ";
WriteOwnership(studentList); // Владеет объектами.
studentList.OwnsElements(false) ;
cout « "After studentList.OwnsElements(false): ";
WriteOwnership(studentList); // He владеет объектами.
STUDENT *s;
s = studentList[0];
studentList.Detach(0); // Элемент не уничтожен. // s определена.
studentList.AddAt(s, 0); // Кладем s обратно.
studentList.Detach(0, TShouldDelete::NoDelete) ;
// Эквивалентно // предыдущей Detach.
studentList. AddAt .(s, 0); // Кладем s обратно
studentList.Detach(0, TShouldDelete::DefDelete) ;
// s все еще определено // хотя и не владеет элементами.
studentList.AddAt(s, 0); // Кладем s обратно.
studentList.Detach(0, TShouldDelete::Delete) ;
// Элемент уничтожен. - // s HE определена
S = new STUDENT("NEWSTU1", 1.0);
studentList.AddAt(s, 0); '
studentList.OwnsElements(true); // Изменение принадлежности //на значение по умолчанию.
studentList.Detach(0, TShouldDelete::DefDelete) ;
// Элемент уничтожен. // s HE определена