Compartilhar via


weak_ptr Class

Envolve um ponteiro fraca associado.

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;
    };

Parâmetros

  • Ty
    O tipo controlado pelo ponteiro flexível.

Comentários

A classe de modelo descreve um objeto que aponta para um recurso que é gerenciado por um ou mais objetos de shared_ptr Class .weak_ptr objetos que aponta para um recurso não afeta a contagem de referência de recurso.Assim, quando o objeto mais recente de shared_ptr que gerencia esse recurso é destruído o recurso será liberado, mesmo se houver objetos de weak_ptr que apontam para aquele recurso.Isso é essencial para evitar ciclos estruturas de dados.

Pontos de objeto de weak_ptr a se um recurso foi construído de um objeto de shared_ptr que possua esse recurso, se foi construído de um objeto de weak_ptr que aponta para esse recurso, ou se o recurso foi lhe designado com weak_ptr::operator=.Um objeto de weak_ptr não fornece acesso direto ao recurso para qual ele aponta.O código que precisa usar o recurso faz isso através de um objeto de shared_ptr que possua esse recurso, projetado chamar a função de membro weak_ptr::lock.Um objeto de weak_ptr expirou quando o recurso que ele foi liberado como qualquer shared_ptr objetos que possua o recurso foi destruído.A chamada lock em um objeto de weak_ptr que expirou cria um objeto vazio de shared_ptr.

Um objeto vazio de weak_ptr não aponta para quaisquer recursos e não tem nenhum bloco de controle.A função de membro lock retorna um objeto vazio de shared_ptr.

Um ciclo ocorre quando dois ou mais recursos controlados por objetos de shared_ptr mantenha mutuamente referenciar objetos de shared_ptr .Por exemplo, uma lista vinculada circular com três elementos tem um nó N0de início; este nó contém um objeto que possua o nó seguir, N1de shared_ptr ; este nó contém um objeto que possua o nó seguir, N2de shared_ptr ; este nó, por sua vez, contém um objeto que possua o nó principal, N0de shared_ptr , fechar o ciclo.Nesta situação, nenhuma das contagens de referência tornar-se-ão nunca zero, e os nós do ciclo não serão liberados.Para eliminar o ciclo, ao último nó N2 deve conter um objeto de weak_ptr apontando para N0 em vez de um objeto de shared_ptr .Uma vez que o objeto de weak_ptr não possui N0 não afeta a contagem de referência de N0 , e quando a referência a mais recente do programa para o nó principal é destruída os nós na lista serão destruídos também.

Membros

Bb982126.collapse_all(pt-br,VS.110).gifConstrutores

weak_ptr::weak_ptr

Constrói weak_ptr.

Bb982126.collapse_all(pt-br,VS.110).gifMétodos

weak_ptr::element_type

O tipo de elemento.

weak_ptr::expired

Teste se a propriedade expirou.

weak_ptr::lock

Obtém a propriedade exclusiva de um recurso.

weak_ptr::owner_before

Retorna true se este weak_ptr é ordenada antes (ou menor que) do ponteiro fornecido.

weak_ptr::reset

Recurso propriedade de versões.

weak_ptr::swap

Troca dois objetos de weak_ptr .

weak_ptr::use_count

Número de resultados de objetos designados de shared_ptr .

Bb982126.collapse_all(pt-br,VS.110).gifOperadores

weak_ptr::operator=

Recurso Replaces propriedade.

Requisitos

Cabeçalho: <memory>

Namespace: STD

Consulte também

Referência

shared_ptr Class

Outros recursos

<memory> Membros