С++ - язык, который изучается постепенно.ГЛАВА 15. Базовый класс VoidPtr
                   Справочники Всё для создания сайта

Ссылки


Home
Бизнес
Справочники
Советы







Материалы книги получены с http://www.itlibitum.ru/

Базовый класс VoidPtr

Память под объекты всегда выделяется снизу вверх. Если новые объекты VoidPtr всегда будут добавляться в конец связанного списка, то список всегда будет отсортирован по возрастанию адресов указываемых объектов. Конструкторы (см. далее) напрямую работают с переменной VoidPtrPool::tail. Деструктор исключает экземпляр из списка. Во всем остальном класс VoidPtr остался прежним. Ниже показаны изменения в VoidPtr.

class VoidPtr {

private:

// Новые переменные для ведения списка

VoidPtr* next; // Следующий элемент списка

VoidPtr* previous; // Предыдущий элемент списка

protected:

// Изменившиеся конструкторы

VoidPtr() : address(NULL), size(0), refcount(0),

next(NULL), previous(NULL) {}

VoidPtr(void* addr, size_t s) : address(addr), size(s), refcount(0),

next(NULL), previous(pool->tail->previous)

{

pool->tail->next = this;

pool->tail = this;

}

public:

// Измененный деструктор

virtual ~VoidPtr()

{

if (size != 0) // Активный указатель - исключить из списка

{

if (previous != NULL)

previous->next = next;

if (next != NULL)

next->previous = previous;

if (pool->tail == this)

pool->tail = previous;

}

size = 0;

address = NULL;

}

};


Назад    Содержание    Далее    

Home  Создание сайтов  Учебник по записи CD  Справочник Web дизайнера Самоучитель IE PHP и MySQL Компьютерные сети С++ E-mail me

Copyright 2007. Климов Александр. All Right Reserved.
Hosted by uCoz