С++ - язык, который изучается постепенно.ГЛАВА 15. Базовый класс VoidPtr
Home�����������E-mail���������������� �������
 ��� ��� ��� �����  ���������� � ���������  Internet Explorer  ������ ������  ���� ��������� ����� 
 ������������ ����  ������� �� PHP � MySQL  ���� ���������������� �++ 
 ���� � 1  ���� � 2  ���� � 3 

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;

}

};


Назад    Содержание    Далее    
Последнее изменение: 4 июля 2025
Copyright 2005. Климов Александр. All Right Reserved.
Сайт создан в системе uCoz