Глава 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 определена