Класс weak_ptr
Создает оболочку слабо связанного указателя.
template<class Ty> class weak_ptr {
public:
typedef Ty element_type;
weak_ptr();
weak_ptr(const weak_ptr&);
template<class Other>
weak_ptr(const weak_ptr<Other>&);
template<class Other>
weak_ptr(const shared_ptr<Other>&);
weak_ptr& operator=(const weak_ptr&);
template<class Other>
weak_ptr& operator=(const weak_ptr<Other>&);
template<class Other>
weak_ptr& operator=(shared_ptr<Other>&);
void swap(weak_ptr&);
void reset();
long use_count() const;
bool expired() const;
shared_ptr<Ty> lock() const;
};
Параметры
- Ty
Тип управляемого слабым указателем.
Заметки
Класс шаблона описание объекта, на который указывает на ресурс, управляемый одним или несколькими объектами Класс shared_ptr. Объекты weak_ptr, указывающих на ресурс не влияют на счетчик ссылок ресурса. Таким образом, когда последний объект shared_ptr, управляющий ресурс разрушается ресурс будет удаленного, даже если объекты weak_ptr — к этому ресурсу. Это необходимо для предотвращения циклов в структурах данных.
Точки объекта weak_ptr к ресурсу, если было создано из объекта, shared_ptr с ресурс, если было создано из объекта weak_ptr, на который указывает на этот ресурс или если ресурс присвоен ему с weak_ptr::operator=. Объект weak_ptr не предоставляет прямой доступ к ресурсу, он указывает на. Код, который должен использовать ресурс сделать через объект shared_ptr с ресурс, созданный путем вызова функции-члена weak_ptr::lock. Объект weak_ptr истек, когда был удаленного ресурс, так как он указывает на все объекты shared_ptr, иметь уничтожить ресурс. Вызов lock объекта weak_ptr, истек создает пустой объект shared_ptr.
Пустой объект weak_ptr не указывает на всем ресурсам и нет блок элемента управления. Функцию-член lock возвращает пустой объект shared_ptr.
Цикл возникает, когда два или более ресурсов управления версиями объектами shared_ptr содержат взаимно ссылаться на объекты shared_ptr. Например, круговой связанный список с элементами 3 имеет головной узел N0; этот узел содержит объект, имеющий следующий узел, N1shared_ptr; этот узел содержит объект, имеющий следующий узел, N2shared_ptr; этот узел, в свою очередь, содержит объект с головным узлом, N0shared_ptr, закроя цикл. В этом случае ни одна из счетчиков ссылок всегда будет содержать ноль и не будут удаляются узлы в цикле. Чтобы исключить цикл, последний узел N2 должен содержать объект weak_ptr, указывающего на N0 вместо объекта shared_ptr. Поскольку объект weak_ptr не имеет N0 это не влияет на счетчик ссылок N0 и, если будет разрушена программы последнюю ссылку в ведущий узел узлы в списке также будут уничтожены.
Члены
конструкторов;
Конструирует weak_ptr. |
Методы
Тип элемента. |
|
Если тесты владение истек. |
|
Получает владение монопольное ресурса. |
|
Возвращает true, если это weak_ptr приказано перед (или меньше), предоставляемым указателем. |
|
Ресурс выпусков имеемый. |
|
Обмен 2 объекта weak_ptr. |
|
Подсчитывает количество пять объектов shared_ptr. |
Операторы
Ресурс Replaces имеемый. |
Требования
Заголовок:<memory>
Пространство имен: std