На данный момент указатель может работать с двумя типами объектов:
Для ссылочных классов, наследующих 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;
Данный класс обеспечивает многопоточность.
См. определение в файле 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) |
Оператор присвоения. | |
Type & | operator * () const |
Оператор разыменования, возвращает ссылку на объект. | |
Type * | operator-> () 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 |
Оператор >=. | |
Type * | Pointer () const |
Получить указатель на объект. | |
bool | IsNull () const |
Проверка на NULL. | |
bool | IsRefObject () |
Возвращает true, если тип Type унаследован от IRefObject, т. | |
void | SetNull () |
Операция присвоения NULL. | |
void | SetPointer (Type *Src) |
Операция присвоения указателя на объект. | |
void | SetPointerWithoutRefCounting (Type *Src) |
Операция присвоения указателя на объект. | |
Открытые статические члены | |
static RefPtr< Type > | Null () |
Возвращает пустой ссылочный указатель. | |
template<typename SrcT> | |
static RefPtr< Type > | StaticCast (const RefPtr< SrcT > &Src) |
Операция статического приведения типов ссылочных указателей. | |
template<typename SrcT> | |
static RefPtr< Type > | DynamicCast (const RefPtr< SrcT > &Src) |
Операция динамического приведения типов ссылочных указателей. | |
Друзья | |
class | RefPtr |
typedef T Cntm::RefPtr< T >::Type |
Cntm::RefPtr< T >::RefPtr | ( | ) | [inline] |
Cntm::RefPtr< T >::RefPtr | ( | const Type * | Src | ) | [inline] |
Конструктор.
Использует указатель на объект. Увеличивает кол-во ссылок на объект, если он не NULL.
Данный конструктор следует использовать при создании объекта с помощью new или при преобразовании "this" в RefPtr. Во всех прочих случаях конструктор должен использоваться с осторожностью.
Cntm::RefPtr< T >::RefPtr | ( | const RefPtr< Type > & | Src | ) | [inline] |
Cntm::RefPtr< T >::RefPtr | ( | const RefPtr< T2 > & | Src | ) | [inline] |
Cntm::RefPtr< T >::~RefPtr | ( | ) | [inline] |
RefPtr< Type >& Cntm::RefPtr< T >::operator= | ( | const Type * | Src | ) | [inline] |
Оператор присвоения.
Использует указатель на объект. Увеличивает кол-во ссылок на новый объект и уменьшает на старый, если они не NULL.
Данный оператор следует использовать при создании объекта с помощью new или при преобразовании "this" в RefPtr. Во всех прочих случаях оператор должен использоваться с осторожностью.
RefPtr< Type >& Cntm::RefPtr< T >::operator= | ( | const RefPtr< T2 > & | Src | ) | [inline] |
RefPtr< Type >& Cntm::RefPtr< T >::operator= | ( | const RefPtr< Type > & | Src | ) | [inline] |
Type& Cntm::RefPtr< T >::operator * | ( | ) | const [inline] |
Type* Cntm::RefPtr< T >::operator-> | ( | ) | const [inline] |
Cntm::RefPtr< T >::operator Type * | ( | ) | const [inline] |
Cntm::RefPtr< T >::operator bool | ( | ) | const [inline] |
bool Cntm::RefPtr< T >::operator! | ( | ) | const [inline] |
bool Cntm::RefPtr< T >::operator== | ( | Type * | Ptr | ) | const [inline] |
bool Cntm::RefPtr< T >::operator== | ( | const RefPtr< T > & | Ptr | ) | const [inline] |
bool Cntm::RefPtr< T >::operator== | ( | const RefPtr< T2 > & | Ptr | ) | const [inline] |
bool Cntm::RefPtr< T >::operator!= | ( | Type * | Ptr | ) | const [inline] |
bool Cntm::RefPtr< T >::operator!= | ( | const RefPtr< T > & | Ptr | ) | const [inline] |
bool Cntm::RefPtr< T >::operator!= | ( | const RefPtr< T2 > & | Ptr | ) | const [inline] |
bool Cntm::RefPtr< T >::operator< | ( | const RefPtr< T > & | Ptr | ) | const [inline] |
bool Cntm::RefPtr< T >::operator<= | ( | const RefPtr< T > & | Ptr | ) | const [inline] |
bool Cntm::RefPtr< T >::operator> | ( | const RefPtr< T > & | Ptr | ) | const [inline] |
bool Cntm::RefPtr< T >::operator>= | ( | const RefPtr< T > & | Ptr | ) | const [inline] |
static RefPtr< Type > Cntm::RefPtr< T >::Null | ( | ) | [inline, static] |
static RefPtr< Type > Cntm::RefPtr< T >::StaticCast | ( | const RefPtr< SrcT > & | Src | ) | [inline, static] |
static RefPtr< Type > Cntm::RefPtr< T >::DynamicCast | ( | const RefPtr< SrcT > & | Src | ) | [inline, static] |
Type* Cntm::RefPtr< T >::Pointer | ( | ) | const [inline] |
bool Cntm::RefPtr< T >::IsNull | ( | ) | const [inline] |
bool Cntm::RefPtr< T >::IsRefObject | ( | ) | [inline] |
Возвращает true, если тип Type унаследован от IRefObject, т.
е. объект подсчитывает ссылки на себя, false - в противном случае.
void Cntm::RefPtr< T >::SetNull | ( | ) | [inline] |
void Cntm::RefPtr< T >::SetPointer | ( | Type * | Src | ) | [inline] |
Операция присвоения указателя на объект.
Увеличивает кол-во ссылок на новый объект и уменьшает на старый, если они не NULL.
Данный метод следует использовать при создании объекта с помощью new или при преобразовании "this" в RefPtr. Во всех прочих случаях метод должен использоваться с осторожностью.
void Cntm::RefPtr< T >::SetPointerWithoutRefCounting | ( | Type * | Src | ) | [inline] |
Операция присвоения указателя на объект.
Не уменьшает кол-во ссылок на старый объект и не увеличивает кол-во ссылок на новый.
Данный метод может использоваться для перевода объекта на ручное управление ссылками.
Использовать данный метод следует только в случае крайней необходимости, т.к. он нарушает идеологию подсчета сылок.
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой 1.5.3 |