#include <sh_ptr.hpp>
Открытые члены | |
| sh_array (T *ptr=0) | |
| Создает объект, ответственный за уничтожение переданного указателя на массив объектов. | |
| sh_array (const sh_array &sha) | |
| Копирует переданный объект просто увеличивая количество ссылок на разделяемый указатель. | |
| ~sh_array () | |
| Уменьшает количество ссылок на разделяемый указатель и удаляет его, если на него никто больше не ссылается. | |
| sh_array & | operator= (const sh_array &sha) |
| Присваивает новое значение. | |
| void | swap (sh_array &sha) |
| Обменивает содержимое объектов. | |
| T & | operator[] (size_t i) const |
| Возвращает ссылку на i-тый элемент разделяемого массива. | |
| T * | get () const |
| Возвращает значение разделяемого указателя. | |
| void | set (T *ptr) |
| Устанавливает значение разделяемого указателя, т.е. | |
| size_t | refs () const |
| Возвращает количество ссылок. | |
Закрытые данные | |
| Rep * | rep |
| указатель на разделяемое представление | |
В его задачу входит автоматическое уничтожение переданного массива, когда на него не останется больше ссылок. Если необходимо "забрать" владение переданным указателем у всех копий sh_array, то нужно воспользоваться вызовом set(0), в результате чего деструктор sh_array ничего не уничтожит, т.к. delete 0 является пустой операцией. Как правило, использование данного "умного указателя" на массив не очень удачная идея и лучше выбрать комбинацию sh_ptr<std::vector>.
См. определение в файле sh_ptr.hpp строка 159
|
||||||||||
|
Создает объект, ответственный за уничтожение переданного указателя на массив объектов. Указатель будет корректно удален даже в случае возникновения исключения в конструкторе sh_array, т.о. вызов sh_array<T>(new T[10]) не приведет к утечке ресурсов. См. определение в файле sh_ptr.hpp строка 196
00197 {
00198 try { rep=new Rep(ptr); }
00199 catch (...) {
00200 delete [] ptr;
00201 throw;
00202 }
00203 }
|
|
||||||||||
|
Копирует переданный объект просто увеличивая количество ссылок на разделяемый указатель.
См. определение в файле sh_ptr.hpp строка 209 Перекрестные ссылки sh_array< T >::Rep::refs и sh_array< T >::rep.
|
|
|||||||||
|
Уменьшает количество ссылок на разделяемый указатель и удаляет его, если на него никто больше не ссылается.
См. определение в файле sh_ptr.hpp строка 219 Перекрестные ссылки sh_array< T >::Rep::refs.
|
|
|||||||||
|
Возвращает значение разделяемого указателя.
См. определение в файле sh_ptr.hpp строка 253 Перекрестные ссылки sh_array< T >::Rep::ptr.
|
|
||||||||||
|
Присваивает новое значение. Количество ссылок на старый разделяемый указатель уменьшается (что может привести к его удалению), а на новый -- увеличивается. См. определение в файле sh_ptr.hpp строка 226 Перекрестные ссылки sh_array< T >::Rep::refs и sh_array< T >::rep.
|
|
||||||||||
|
Возвращает ссылку на i-тый элемент разделяемого массива.
См. определение в файле sh_ptr.hpp строка 248 Перекрестные ссылки sh_array< T >::Rep::ptr.
|
|
|||||||||
|
Возвращает количество ссылок.
См. определение в файле sh_ptr.hpp строка 264 Перекрестные ссылки sh_array< T >::Rep::refs.
|
|
||||||||||
|
Устанавливает значение разделяемого указателя, т.е. все копии текущего sh_array станут указывать на новый массив объектов. См. определение в файле sh_ptr.hpp строка 259 Перекрестные ссылки sh_array< T >::Rep::ptr.
|
|
||||||||||
|
Обменивает содержимое объектов.
См. определение в файле sh_ptr.hpp строка 238 Перекрестные ссылки sh_array< T >::rep.
|
|
|||||
|
указатель на разделяемое представление
См. определение в файле sh_ptr.hpp строка 187 Используется в sh_array< T >::operator=(), sh_array< T >::sh_array() и sh_array< T >::swap(). |
1.3