Шаблон класса Cntm::RefPtr< T >
[Cntm.RefCount]

Граф наследования:Cntm::RefPtr< T >:

Cntm::Using Cntm::UsingReentrantSync Cntm::UsingSync

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


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

template<typename T>
class Cntm::RefPtr< T >

Специальный ссылочный указатель для автоматизации подсчета ссылок на объекты.

На данный момент указатель может работать с двумя типами объектов:

Для ссылочных классов, наследующих Cntm::IRefObject, Cntm::RefBase, Cntm::RefBaseEx принцип работы ссылочного указателя следующий: при присвоении указателю ссылки он увеличивает кол-во ссылок на присваиваемый объект и уменьшает на тот объект, на который он ссылался до присвоения.

Пример:

 // Использование RefPtr(Type* Src). В конструкторе кол-во ссылок устанавливается в 0,
 // при присвоении ссылочному указателю p1 кол-во ссылок увеличивается до 1.
 Class1::Ptr p1 = new Class1(Arg1);
 Class1::Ptr p2 = p1; // Копирование указателя увеличивает кол-во ссылок до 2.
 
 // Присваивание обычному указатель - кол-во ссылок на новый объект = 0. 
 Class1* c1 = new Class1(Arg3);
 Class1::Ptr p3 = c1; // Кол-во ссылок на второй объект увеличивается до 1.
 // Замена значения указателя увеличивает кол-во ссылок на первый объект до 3, 
 // а на второй - до 0, что приводит к его автоматическому уничтожению.
 p3 = p2; 
Более полная информация приведена в описании классов Cntm::IRefObject, Cntm::RefBase, Cntm::RefBaseEx.

Данный класс обеспечивает многопоточность.

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

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


Открытые типы

typedef T Type

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

 RefPtr ()
 Конструктор без параметров.
 RefPtr (const Type *Src)
 Конструктор.
 RefPtr (const RefPtr< Type > &Src)
 Конструктор копирования.
template<typename T2>
 RefPtr (const RefPtr< T2 > &Src)
 Конструктор копирования.
 ~RefPtr ()
 Деструктор.
RefPtr< Type > & operator= (const Type *Src)
 Оператор присвоения.
template<typename T2>
RefPtr< Type > & operator= (const RefPtr< T2 > &Src)
 Оператор присвоения.
RefPtr< Type > & operator= (const RefPtr< Type > &Src)
 Оператор присвоения.
Typeoperator * () const
 Оператор разыменования, возвращает ссылку на объект.
Typeoperator-> () const
 Оператор доступа к членам.
 operator Type * () const
 Оператор преобразования к указателю.
 operator bool () const
 Приведение к типу bool.
bool operator! () const
 Оператор not.
bool operator== (Type *Ptr) const
 Оператор сравнения на равенство.
bool operator== (const RefPtr &Ptr) const
 Оператор сравнения на равенство.
template<typename T2>
bool operator== (const RefPtr< T2 > &Ptr) const
 Оператор сравнения на равенство.
bool operator!= (Type *Ptr) const
 Оператор сравнения на неравенство.
bool operator!= (const RefPtr &Ptr) const
 Оператор сравнения на неравенство.
template<typename T2>
bool operator!= (const RefPtr< T2 > &Ptr) const
 Оператор сравнения на неравенство.
bool operator< (const RefPtr &Ptr) const
 Оператор <.
bool operator<= (const RefPtr &Ptr) const
 Оператор <=.
bool operator> (const RefPtr &Ptr) const
 Оператор >.
bool operator>= (const RefPtr &Ptr) const
 Оператор >=.
TypePointer () const
 Получить указатель на объект.
bool IsNull () const
 Проверка на NULL.
bool IsRefObject ()
 Возвращает true, если тип Type унаследован от IRefObject, т.
void SetNull ()
 Операция присвоения NULL.
void SetPointer (Type *Src)
 Операция присвоения указателя на объект.
void SetPointerWithoutRefCounting (Type *Src)
 Операция присвоения указателя на объект.

Открытые статические члены

static RefPtr< TypeNull ()
 Возвращает пустой ссылочный указатель.
template<typename SrcT>
static RefPtr< TypeStaticCast (const RefPtr< SrcT > &Src)
 Операция статического приведения типов ссылочных указателей.
template<typename SrcT>
static RefPtr< TypeDynamicCast (const RefPtr< SrcT > &Src)
 Операция динамического приведения типов ссылочных указателей.

Друзья

class RefPtr

Определения типов

template<typename T>
typedef T Cntm::RefPtr< T >::Type

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


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

template<typename T>
Cntm::RefPtr< T >::RefPtr (  )  [inline]

Конструктор без параметров.

Инициализирует указатель в NULL.

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

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

Конструктор.

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

Данный конструктор следует использовать при создании объекта с помощью new или при преобразовании "this" в RefPtr. Во всех прочих случаях конструктор должен использоваться с осторожностью.

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

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

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

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

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

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

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

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

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

template<typename T>
Cntm::RefPtr< T >::~RefPtr (  )  [inline]

Деструктор.

Уменьшает кол-во ссылок на объект, если он не NULL.

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


Методы

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

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

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

Данный оператор следует использовать при создании объекта с помощью new или при преобразовании "this" в RefPtr. Во всех прочих случаях оператор должен использоваться с осторожностью.

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

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

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

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

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

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

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

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

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

template<typename T>
Type& Cntm::RefPtr< T >::operator * (  )  const [inline]

Оператор разыменования, возвращает ссылку на объект.

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

template<typename T>
Type* Cntm::RefPtr< T >::operator-> (  )  const [inline]

Оператор доступа к членам.

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

template<typename T>
Cntm::RefPtr< T >::operator Type * (  )  const [inline]

Оператор преобразования к указателю.

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

template<typename T>
Cntm::RefPtr< T >::operator bool (  )  const [inline]

Приведение к типу bool.

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

template<typename T>
bool Cntm::RefPtr< T >::operator! (  )  const [inline]

Оператор not.

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

template<typename T>
bool Cntm::RefPtr< T >::operator== ( Type Ptr  )  const [inline]

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

Использует указатель на объект.

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

template<typename T>
bool Cntm::RefPtr< T >::operator== ( const RefPtr< T > &  Ptr  )  const [inline]

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

Использует ссылочный указатель.

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

template<typename T>
template<typename T2>
bool Cntm::RefPtr< T >::operator== ( const RefPtr< T2 > &  Ptr  )  const [inline]

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

Использует ссылочный указатель.

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

template<typename T>
bool Cntm::RefPtr< T >::operator!= ( Type Ptr  )  const [inline]

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

Использует указатель на объект.

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

template<typename T>
bool Cntm::RefPtr< T >::operator!= ( const RefPtr< T > &  Ptr  )  const [inline]

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

Использует ссылочный указатель.

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

template<typename T>
template<typename T2>
bool Cntm::RefPtr< T >::operator!= ( const RefPtr< T2 > &  Ptr  )  const [inline]

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

Использует ссылочный указатель.

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

template<typename T>
bool Cntm::RefPtr< T >::operator< ( const RefPtr< T > &  Ptr  )  const [inline]

Оператор <.

Использует ссылочный указатель.

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

template<typename T>
bool Cntm::RefPtr< T >::operator<= ( const RefPtr< T > &  Ptr  )  const [inline]

Оператор <=.

Использует ссылочный указатель.

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

template<typename T>
bool Cntm::RefPtr< T >::operator> ( const RefPtr< T > &  Ptr  )  const [inline]

Оператор >.

Использует ссылочный указатель.

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

template<typename T>
bool Cntm::RefPtr< T >::operator>= ( const RefPtr< T > &  Ptr  )  const [inline]

Оператор >=.

Использует ссылочный указатель.

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

template<typename T>
static RefPtr< Type > Cntm::RefPtr< T >::Null (  )  [inline, static]

Возвращает пустой ссылочный указатель.

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

template<typename T>
template<typename SrcT>
static RefPtr< Type > Cntm::RefPtr< T >::StaticCast ( const RefPtr< SrcT > &  Src  )  [inline, static]

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

Соответствует static_cast для обычных указателей.

Пример: Class1::Ptr p1(new Class1); Class2::Ptr p2 = Class2::Ptr::StaticCast(p1);

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

template<typename T>
template<typename SrcT>
static RefPtr< Type > Cntm::RefPtr< T >::DynamicCast ( const RefPtr< SrcT > &  Src  )  [inline, static]

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

Соответствует dynamic_cast для обычных указателей.

Пример: Class1::Ptr p1(new Class1); Class2::Ptr p2 = Class2::Ptr::DynamicCast(p1);

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

template<typename T>
Type* Cntm::RefPtr< T >::Pointer (  )  const [inline]

Получить указатель на объект.

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

template<typename T>
bool Cntm::RefPtr< T >::IsNull (  )  const [inline]

Проверка на NULL.

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

template<typename T>
bool Cntm::RefPtr< T >::IsRefObject (  )  [inline]

Возвращает true, если тип Type унаследован от IRefObject, т.

е. объект подсчитывает ссылки на себя, false - в противном случае.

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

template<typename T>
void Cntm::RefPtr< T >::SetNull (  )  [inline]

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

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

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

template<typename T>
void Cntm::RefPtr< T >::SetPointer ( Type Src  )  [inline]

Операция присвоения указателя на объект.

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

Данный метод следует использовать при создании объекта с помощью new или при преобразовании "this" в RefPtr. Во всех прочих случаях метод должен использоваться с осторожностью.

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

template<typename T>
void Cntm::RefPtr< T >::SetPointerWithoutRefCounting ( Type Src  )  [inline]

Операция присвоения указателя на объект.

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

Данный метод может использоваться для перевода объекта на ручное управление ссылками.

Использовать данный метод следует только в случае крайней необходимости, т.к. он нарушает идеологию подсчета сылок.

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


Документация по друзьям класса и функциям, отноносящимся к классу

template<typename T>
friend class RefPtr [friend]

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


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