
На данный момент указатель может работать с двумя типами объектов:
Для ссылочных классов, наследующих 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
|