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
Construtores
Constrói weak_ptr. |
Métodos
O tipo de elemento. |
|
Teste se a propriedade expirou. |
|
Obtém a propriedade exclusiva de um recurso. |
|
Retorna true se este weak_ptr é ordenada antes (ou menor que) do ponteiro fornecido. |
|
Recurso propriedade de versões. |
|
Troca dois objetos de weak_ptr . |
|
Número de resultados de objetos designados de shared_ptr . |
Operadores
Recurso Replaces propriedade. |
Requisitos
Cabeçalho: <memory>
Namespace: STD