ВУЗ:
Составители:
Рубрика:
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 templateclass 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
- …
- следующая ›
- последняя »