#include <sh_ptr.hpp>
Открытые члены | |
| sh_ptr (T *ptr=0) | |
| Создает объект, ответственный за уничтожение переданного указателя. | |
| sh_ptr (const sh_ptr &shp) | |
| Копирует переданный объект просто увеличивая количество ссылок на разделяемый указатель. | |
| ~sh_ptr () | |
| Уменьшает количество ссылок на разделяемый указатель и удаляет его, если на него никто больше не ссылается. | |
| sh_ptr & | operator= (const sh_ptr &shp) |
| Присваивает новое значение. | |
| void | swap (sh_ptr &shp) |
| Обменивает содержимое объектов. | |
| T & | operator * () const |
| Возвращает ссылку на разделяемый объект при применении к sh_ptr оператора разыменования. | |
| T * | operator-> () const |
| Возвращает указатель на разделяемый объект при применении к sh_ptr оператора ->. | |
| T * | get () const |
| Возвращает значение разделяемого указателя. | |
| void | set (T *ptr) |
| Устанавливает значение разделяемого указателя, т.е. | |
| size_t | refs () const |
| Возвращает количество ссылок. | |
Закрытые данные | |
| Rep * | rep |
| указатель на разделяемое представление | |
В его задачу входит автоматическое уничтожение переданного объекта, когда на него не останется больше ссылок. Если необходимо "забрать" владение переданным указателем у всех копий sh_ptr, то нужно воспользоваться вызовом set(0), в результате чего деструктор sh_ptr ничего не уничтожит, т.к. delete 0 является пустой операцией.
См. определение в файле sh_ptr.hpp строка 29
|
||||||||||
|
Создает объект, ответственный за уничтожение переданного указателя. Указатель будет корректно удален даже в случае возникновения исключения в конструкторе sh_ptr, т.о. вызов sh_ptr<T>(new T) не приведет к утечке ресурсов. Тем не менее, не стоит забывать, что вызов вроде f(sh_ptr<T1>(new T1), sh_ptr<T2>(new T2)) уже чреват потерей объектов, т.к. порядок вычисления подвыражений не определен и новые объекты T1 и T2 могут быть созданы до соответствующих sh_ptr, отвечающих за освобождение ресурсов. См. определение в файле sh_ptr.hpp строка 70
00071 {
00072 try { rep=new Rep(ptr); }
00073 catch (...) {
00074 delete ptr;
00075 throw;
00076 }
00077 }
|
|
||||||||||
|
Копирует переданный объект просто увеличивая количество ссылок на разделяемый указатель.
См. определение в файле sh_ptr.hpp строка 83
|
|
|||||||||
|
Уменьшает количество ссылок на разделяемый указатель и удаляет его, если на него никто больше не ссылается.
См. определение в файле sh_ptr.hpp строка 93
|
|
|||||||||
|
Возвращает значение разделяемого указателя.
См. определение в файле sh_ptr.hpp строка 134
|
|
|||||||||
|
Возвращает ссылку на разделяемый объект при применении к sh_ptr оператора разыменования.
См. определение в файле sh_ptr.hpp строка 123
|
|
|||||||||
|
Возвращает указатель на разделяемый объект при применении к sh_ptr оператора ->.
См. определение в файле sh_ptr.hpp строка 129
|
|
||||||||||
|
Присваивает новое значение. Количество ссылок на старый разделяемый указатель уменьшается (что может привести к его удалению), а на новый -- увеличивается. См. определение в файле sh_ptr.hpp строка 100
|
|
|||||||||
|
Возвращает количество ссылок.
См. определение в файле sh_ptr.hpp строка 145
|
|
||||||||||
|
Устанавливает значение разделяемого указателя, т.е. все копии текущего sh_ptr станут указывать на новый объект. См. определение в файле sh_ptr.hpp строка 140
|
|
||||||||||
|
Обменивает содержимое объектов.
См. определение в файле sh_ptr.hpp строка 112
|
|
|||||
|
указатель на разделяемое представление
См. определение в файле sh_ptr.hpp строка 57 Используется в sh_ptr< TextFinder >::operator=(), sh_ptr< TextFinder >::sh_ptr() и sh_ptr< TextFinder >::swap(). |
1.3