Программирование >>  Формирование пользовательского контейнера 

1 ... 5 6 7 [ 8 ] 9 10 11 ... 156


II Постфикс -.

Iter operator-(int notused) { Т *tinp = ptr;

ptr~;

return Iter<T>(tinp, begin, end);

Возвращает ссылку на объект

с заданным индексом. Не разрешает выход

за пределы диапазона.

Т &operator[](int i) {

if( (i < 0) II (i >= (end-begin)) ) throw OutOfRangeExc ();

return ptr[i];

Определяет операции отношения, bool operator==(Iter op2) { return ptr == op2.ptr;

bool operator!=(Iter op2) { return ptr != op2.ptr;

bool cperator<(Iter op2) { return ptr < op2.ptr;

bool operator<=(Iter op2) { return ptr <= op2.ptr;

bool operator>(Iter op2) { return ptr > op2.ptr;

bool operator>=(Iter op2) { return ptr >= op2.ptr;



II Вычитает целое из Iter. Iter operator-(int n) {

ptr -= n;

return *this;

Прибавляет целое к Iter, Iter operator+(int n) {

ptr += n;

return *this;

Возвращает число элементов между двумя указателями Iter, int operator-(Iter<T> &itr2) { return ptr - itr2.ptr;

Этот.класс определяет элемент, который запоминается

в информационном списке сбора мусора.

tenplate <class Т> class GClnfo { public:

unsigned refcount; текущее число ссылок Т *memPtr; указатель на выделенную память

/* isArray равен true, если memPtr указывает на

размещенный массив. В противном случае false. */ bool isArray; true, если указание на массив

/* Если memPtr указывает на размещенный

массив, то arraySize содержит его размер */ unsigned arraySize; длина или размер массива

Здесь mPtr указывает на выделенную память. Если это массив, в size определяет размер массива.



GCInfo(T *mPtr, unsigned size=0) { refcount = 1; memPtr = mPtr; if(size != 0)

isArray - true; else

isArray = false; arraySize = size;

Перегруженная операция == позволяет сравнивать объекты GCInfo. Это необходимо для класса list библиотеки STL. teroplate <class Т> bool operator==(const GCInfo<T> &obl, const GCInfo<T> &ob2) { return (obl.memPtr == ob2.memPtr);

GCPtr реализует тип указателя, применяющегося

для сбора мусора и освобождающего неиспользуемую память.

GCPtr должен использоваться только для указания на память,

которая выделяется динамически с помощью new.

Если применяется для ссылки на массив,

определяет размер массива.

tenplate <class Т, int size=0> class GCPtr {

gclist поддерживает список сбора мусора, static list<GCInfo<T> > gclist;

/ / addr указывает на выделенную память,.на которую этот указатель GCPtr ссылается в данный момент. Т *addr;

/* isArray равен true, если этот GCPtr указывает

на размещенный массив. В противном случае равен false. */ bool isArray; Равен true, если указание на массив.



1 ... 5 6 7 [ 8 ] 9 10 11 ... 156

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика