Класс Cntm::GenericRefPtr
[Cntm.RefCount]

Граф наследования:Cntm::GenericRefPtr:

Cntm::BasicGenericRefPtr

Полный список членов класса


Подробное описание

Обобщенные ссылочные указатели это нешаблонные, нетипизированные указатели (указатели на void*), обладающие способностью управлять подсчетом ссылок на указываемый объект.

Их назначение - обеспечить подсчет ссылок на объекты, когда требуется уйти от шаблонов на типы классов этих объектов. Тип объекта указывается только при создании или присвоении обобщенному указателю значения из ссылочного указателя. В других операциях (копирования, сравнения, уничтожения) тип присвоенного объекта не указывается.

Поведение обобщенного ссылочного указателя совпадает с поведением ссылочного указателя: в конструкторе происходит увеличение кол-ва ссылок на объект, в деструкторе - уменьшение, а при присвоении нового значения - увеличение ссылок на новое значение и уменьшение ссылок на старое. Если тип присвоенного объекта не поддерживает подсчет ссылок, то ни каких действий выполнено не будет.

Пример:

 Class1::Ptr p1 = new Class1(1); // Создание объекта типа Class1, кол-во ссылок = 1 (объект 1).
 Class1::Ptr p2 = new Class1(2)); // Создание объекта типа Class1, кол-во ссылок = 1 (объект 2).
 ...
 GenericRefPtr gp1 = p1; // Увеличение кол-ва ссылок на объект 1.
 GenericRefPtr gp2 = p2; // Увеличение кол-ва ссылок на объект 2.
 ...
 GenericRefPtr gp = gp1; // Увеличение кол-ва ссылок на объект 1.
 gp = gp2; // Увеличение кол-ва ссылок на объект 2 и уменьшение на объект 1.
 ...
 // В деструкторах p1 и gp1 кол-во ссылок на объект 1 уменьшается до 0.
 // В деструкторах p2, gp2 и gp кол-во ссылок на объект 1 уменьшается до 0.

Данный класс наследует BasicGenericRefPtr, в котором определены основные операции над обобщенным ссылочным указателем.

В пару с обобщенным ссылочным указателем имеется обобщенный не ссылочный указатель (нешаблонный указатель на void*) GenericNoRefPtr. Обеспечивается взаимная конвертация между классами GenericRefPtr и GenericNoRefPtr.

Данный класс не обеспечивает полную многопоточность. Операция присвоения нового значения требует внешней синхронизации, при условии, что существует возможность того, что в момент присвоения источнику тоже может быть присвоено значение.

Автор:
Овсеевич Р.

См. определение в файле GenericRefPtr.h строка 51


Открытые члены

 GenericRefPtr ()
 Конструктор по умолчанию.
template<typename T>
 GenericRefPtr (const RefPtr< T > &Src)
 Конструктор инициализации из ссылочного указателя.
template<typename T>
 GenericRefPtr (T *Src)
 Конструктор инициализации из обычного указателя.
 GenericRefPtr (const BasicGenericRefPtr &Src)
 Конструктор копирования.
 GenericRefPtr (const GenericRefPtr &Src)
 Конструктор копирования.
 ~GenericRefPtr ()
 Уменьшает кол-во ссылок на хранимый объект.
template<typename T>
BasicGenericRefPtroperator= (const RefPtr< T > &Src)
 Оператор присвоения ссылочного указателя.
template<typename T>
BasicGenericRefPtroperator= (const T *Src)
 Оператор присвоения обычного указателя.
BasicGenericRefPtroperator= (const BasicGenericRefPtr &Src)
 Оператор присвоения.
BasicGenericRefPtroperator= (const GenericRefPtr &Src)
 Оператор присвоения.
void SetNull ()
 Сбросить указатель в NULL.

Конструктор(ы)

Cntm::GenericRefPtr::GenericRefPtr (  )  [inline]

Конструктор по умолчанию.

Инициализирует указатель NULL. Увеличивает кол-во ссылок на присваиваемый объект.

См. определение в файле GenericRefPtr.h строка 58

Перекрестные ссылки Cntm::BasicGenericRefPtr::GenImpl() и Cntm::BasicGenericRefPtr::PtrPointer().

template<typename T>
Cntm::GenericRefPtr::GenericRefPtr ( const RefPtr< T > &  Src  )  [inline]

Конструктор инициализации из ссылочного указателя.

Увеличивает кол-во ссылок на присваиваемый объект.

См. определение в файле GenericRefPtr.h строка 67

Перекрестные ссылки Cntm::BasicGenericRefPtr::GenImpl() и Cntm::BasicGenericRefPtr::PtrPointer().

template<typename T>
Cntm::GenericRefPtr::GenericRefPtr ( T *  Src  )  [inline]

Конструктор инициализации из обычного указателя.

Увеличивает кол-во ссылок на присваиваемый объект.

См. определение в файле GenericRefPtr.h строка 76

Перекрестные ссылки Cntm::BasicGenericRefPtr::GenImpl() и Cntm::BasicGenericRefPtr::PtrPointer().

Cntm::GenericRefPtr::GenericRefPtr ( const BasicGenericRefPtr Src  )  [inline]

Конструктор копирования.

Увеличивает кол-во ссылок на присваиваемый объект.

См. определение в файле GenericRefPtr.h строка 84

Перекрестные ссылки Cntm::BasicGenericRefPtr::GenImpl() и Cntm::BasicGenericRefPtr::PtrPointer().

Cntm::GenericRefPtr::GenericRefPtr ( const GenericRefPtr Src  )  [inline]

Конструктор копирования.

Увеличивает кол-во ссылок на присваиваемый объект.

См. определение в файле GenericRefPtr.h строка 92

Перекрестные ссылки Cntm::BasicGenericRefPtr::GenImpl() и Cntm::BasicGenericRefPtr::PtrPointer().

Cntm::GenericRefPtr::~GenericRefPtr (  )  [inline]

Уменьшает кол-во ссылок на хранимый объект.

См. определение в файле GenericRefPtr.h строка 100

Перекрестные ссылки Cntm::BasicGenericRefPtr::GenImpl() и Cntm::BasicGenericRefPtr::PtrPointer().


Методы

template<typename T>
BasicGenericRefPtr& Cntm::GenericRefPtr::operator= ( const RefPtr< T > &  Src  )  [inline]

Оператор присвоения ссылочного указателя.

Увеличивает ссылки на новый объект и уменьшает на старый.

См. определение в файле GenericRefPtr.h строка 109

Перекрестные ссылки Cntm::BasicGenericRefPtr::GenImpl(), Cntm::BasicGenericRefPtr::operator=(), Cntm::BasicGenericRefPtr::Pointer() и Cntm::BasicGenericRefPtr::PtrPointer().

template<typename T>
BasicGenericRefPtr& Cntm::GenericRefPtr::operator= ( const T *  Src  )  [inline]

Оператор присвоения обычного указателя.

Увеличивает ссылки на новый объект и уменьшает на старый.

См. определение в файле GenericRefPtr.h строка 125

Перекрестные ссылки Cntm::BasicGenericRefPtr::GenImpl(), Cntm::BasicGenericRefPtr::operator=(), Cntm::BasicGenericRefPtr::Pointer() и Cntm::BasicGenericRefPtr::PtrPointer().

BasicGenericRefPtr& Cntm::GenericRefPtr::operator= ( const BasicGenericRefPtr Src  )  [inline]

Оператор присвоения.

Увеличивает ссылки на новый объект и уменьшает на старый.

Переопределяет метод предка Cntm::BasicGenericRefPtr.

См. определение в файле GenericRefPtr.h строка 140

Перекрестные ссылки Cntm::BasicGenericRefPtr::GenImpl(), Cntm::BasicGenericRefPtr::operator=(), Cntm::BasicGenericRefPtr::Pointer() и Cntm::BasicGenericRefPtr::PtrPointer().

BasicGenericRefPtr& Cntm::GenericRefPtr::operator= ( const GenericRefPtr Src  )  [inline]

Оператор присвоения.

Увеличивает ссылки на новый объект и уменьшает на старый.

См. определение в файле GenericRefPtr.h строка 155

Перекрестные ссылки Cntm::BasicGenericRefPtr::GenImpl(), Cntm::BasicGenericRefPtr::operator=(), Cntm::BasicGenericRefPtr::Pointer() и Cntm::BasicGenericRefPtr::PtrPointer().

void Cntm::GenericRefPtr::SetNull (  )  [inline]

Сбросить указатель в NULL.

Переопределяет метод предка Cntm::BasicGenericRefPtr.

См. определение в файле GenericRefPtr.h строка 170

Перекрестные ссылки Cntm::BasicGenericRefPtr::GenImpl(), Cntm::BasicGenericRefPtr::PtrPointer() и Cntm::BasicGenericRefPtr::SetNull().


Объявления и описания членов класса находятся в файле:
SourceForge.net Logo
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой  doxygen 1.5.3