ВУЗ:
Составители:
Рубрика:
53
основании которой компилятор сгенерирует классы, руководствуясь параметрами
настройки.
Пример:
// Фрагмент класса-шаблона TListed, реализующего список,
// элементами которого являются объекты класса T
template <class T>
class TListed
{ public: static T* getFirst () {return Head;}
static T* getNext (const T* I)
{return ((I)? ((TListed *)I)->Next: getFirst()); }
protected: TListed (): Next (0) {insert ();}
virtual ~TListed () {remove ();}
private: void insert ();
void remove ();
static T* Head; //Начало списка общее для всех объектов
T* Next; //Указатель на следующий объект
};
//Метод insert класса TListed
template <class T>
void TListed<T>::insert()
{ if (! getFirst()) { Head=(T*)this; } //первый элемент списка
else {T* x=getFirst(); //добавление в конец
while (getNext(x)) x=getNext(x);
((TListed<T>*)x)->Next=(T *)this;}
}
Библиотека классов языка Си++
Си++ располагает библиотекой классов, реализующих сложные структуры
данных: списки, очереди, деревья и т.д. Более подробно о библиотеке классов
можно прочесть в [6]. Далее будет рассмотрена задача использования библиотеки
классов для построения списка объектов класса TextPoint из лабораторной работы
№7.
Для решения этой задачи необходимо, чтобы
класс TextPoint стал членом
иерархии классов. С этой целью TextPoint объявляется наследником класса Object.
Необходимо определить в TextPoint чистые виртуальные функции, наследуемые от
Object, иначе TextPoint будет абстрактным классом. После этого список объектов
TextPoint реализуется как объект ListOfPoints класса List.
Пример:
53
основании которой компилятор сгенерирует классы, руководствуясь параметрами
настройки.
Пример:
// Фрагмент класса-шаблона TListed, реализующего список,
// элементами которого являются объекты класса T
template
class TListed
{ public: static T* getFirst () {return Head;}
static T* getNext (const T* I)
{return ((I)? ((TListed *)I)->Next: getFirst()); }
protected: TListed (): Next (0) {insert ();}
virtual ~TListed () {remove ();}
private: void insert ();
void remove ();
static T* Head; //Начало списка общее для всех объектов
T* Next; //Указатель на следующий объект
};
//Метод insert класса TListed
template
void TListed::insert()
{ if (! getFirst()) { Head=(T*)this; } //первый элемент списка
else {T* x=getFirst(); //добавление в конец
while (getNext(x)) x=getNext(x);
((TListed*)x)->Next=(T *)this;}
}
Библиотека классов языка Си++
Си++ располагает библиотекой классов, реализующих сложные структуры
данных: списки, очереди, деревья и т.д. Более подробно о библиотеке классов
можно прочесть в [6]. Далее будет рассмотрена задача использования библиотеки
классов для построения списка объектов класса TextPoint из лабораторной работы
№7.
Для решения этой задачи необходимо, чтобы класс TextPoint стал членом
иерархии классов. С этой целью TextPoint объявляется наследником класса Object.
Необходимо определить в TextPoint чистые виртуальные функции, наследуемые от
Object, иначе TextPoint будет абстрактным классом. После этого список объектов
TextPoint реализуется как объект ListOfPoints класса List.
Пример:
Страницы
- « первая
- ‹ предыдущая
- …
- 51
- 52
- 53
- 54
- 55
- …
- следующая ›
- последняя »
