Поделиться через


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 и, когда будет разрушена программы последнюю ссылку в ведущий узел узлы в списке также будут уничтожены.

Члены

Bb982126.collapse_all(ru-ru,VS.110).gifКонструкторы

weak_ptr::weak_ptr

Конструирует weak_ptr.

Bb982126.collapse_all(ru-ru,VS.110).gifМетоды

weak_ptr::element_type

Тип элемента.

weak_ptr::expired

Если тесты владение истек.

weak_ptr::lock

Получает владение монопольное ресурса.

weak_ptr::owner_before

Возвращает значение true, если данный объект weak_ptr приказано перед (или меньше), предоставляемым указателем.

weak_ptr::reset

Ресурс выпусков имеемый.

weak_ptr::swap

Обмен 2 объекта weak_ptr.

weak_ptr::use_count

Подсчитывает количество пять объектов shared_ptr.

Bb982126.collapse_all(ru-ru,VS.110).gifОператоры

weak_ptr::operator=

Ресурс Replaces имеемый.

Требования

Заголовок: <memory>

Пространство имен: std

См. также

Ссылки

shared_ptr Class

Другие ресурсы

Члены <память>