weak_ptr Class
Создать слабо связанного указатель.
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 Class.Объекты 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; этот узел содержит объект, имеющий следующий узел N1 является shared_ptr; этот узел содержит объект, имеющий следующий узел N2 является shared_ptr; этот узел, в свою очередь, содержит объект, содержащий головной узел N0, shared_ptr, закроя цикл.В этом случае ни одна из счетчиков ссылок всегда будет содержать ноль и не будут удаляются узлы в цикле.Чтобы исключить цикл, последний узел N2 должен содержать объект weak_ptr, указывающего на N0 вместо объекта shared_ptr.Поскольку объект weak_ptr не имеет N0 не влияет на счетчик ссылок N0 и, когда будет разрушена программы последнюю ссылку в ведущий узел узлы в списке также будут уничтожены.
Члены
Конструкторы
Конструирует weak_ptr. |
Методы
Тип элемента. |
|
Если тесты владение истек. |
|
Получает владение монопольное ресурса. |
|
Возвращает значение true, если данный объект weak_ptr приказано перед (или меньше), предоставляемым указателем. |
|
Ресурс выпусков имеемый. |
|
Обмен 2 объекта weak_ptr. |
|
Подсчитывает количество пять объектов shared_ptr. |
Операторы
Ресурс Replaces имеемый. |
Требования
Заголовок: <memory>
Пространство имен: std