|
Программирование >> Формирование пользовательского контейнера
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, если указание на массив.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |