Partilhar via


Classe unique_ptr

Armazena um ponteiro para um objeto possuído. O objeto não pertence a nenhum outro unique_ptr. O objeto é destruído quando unique_ptr é destruído.

template< class Type, class Del = default_delete<Type> >
    class unique_ptr {
public:
    unique_ptr( );
    unique_ptr( nullptr_t Nptr );
    explicit unique_ptr( pointer Ptr );
    unique_ptr( pointer Ptr,
        typename conditional<is_reference<Del>::value, 
            Del,
            typename add_reference<const Del>::type>::type Deleter);
    unique_ptr (pointer Ptr,
        typename remove_reference<Del>::type&& Deleter);
    unique_ptr (unique_ptr&& Right);
    template<class Type2, Class Del2> unique_ptr( unique_ptr<Type2, Del2>&& Right );
    unique_ptr( const unique_ptr& Right) = delete;
    unique_ptr& operator=(const unique_ptr& Right ) = delete;
};

Parâmetros

  • Right
    Um unique_ptr.

  • Nptr
    Um rvalue do tipo std::nullptr_t.

  • Ptr
    Um pointer.

  • Deleter
    Uma função deleter que é associada a unique_ptr.

Exceções

Nenhuma exceção é gerada por unique_ptr.

Comentários

A classe unique_ptr substitui auto_ptr e pode ser usada como um elemento dos contêineres da STL.

Use a função auxiliar make_unique para criar de modo eficiente novas instâncias de unique_ptr.

unique_ptr gerencia exclusivamente um recurso. Cada objeto unique_ptr armazena um ponteiro para o objeto que possui ou armazena um ponteiro nulo. Um recurso pode ser possuído apenas por um objeto unique_ptr; quando um objeto unique_ptr que possui um recurso específico é destruído, o recurso é liberado. Um objeto unique_ptr pode ser movido, mas não copiado; para obter mais informações, consulte Declarador de referência Rvalue: &&.

O recurso é liberado chamando um objeto deleter armazenado do tipo Del que sabe como os recursos são alocados para um determinado unique_ptr. O deleter default_delete<Type> padrão supõe que o recurso apontado por _Ptr é alocado com new e que ele pode ser liberado chamando delete _Ptr. (Uma especialização parcial **unique_ptr<Type[]>**gerencia objetos de matriz alocados com new[] e tem o deleter default_delete<Type[]> padrão, especializado para chamar delete[] _Ptr.)

O ponteiro armazenado para um recurso possuído, stored_ptr tem o tipo pointer. Ele será Del::pointer se definido, e Type * , se não. O objeto deleter armazenado stored_deleter não ocupará nenhum espaço no objeto se deleter não tiver estado. Observe que Del pode ser um tipo de referência.

Membros

Construtores

unique_ptr::unique_ptr

Há sete construtores para unique_ptr.

Typedefs

deleter_type

Um sinônimo para o parâmetro de modelo Del.

element_type

Um sinônimo para o parâmetro de modelo Type.

ponteiro

Um sinônimo para Del::pointer se definido, caso contrário Type *.

Funções membro

unique_ptr::get

Retorna stored_ptr.

unique_ptr::get_deleter

Retorna uma referência para stored_deleter.

unique_ptr::release

Armazena pointer() em stored_ptr e retorna seu conteúdo anterior.

unique_ptr::reset

Libera o recurso possuído atualmente e aceita um novo recurso.

unique_ptr::swap

Troca o recurso e deleter pelo unique_ptr fornecido.

Operadores

operator bool

O operador retorna um valor de um tipo que pode ser convertido em bool. O resultado da conversão em bool é true quando get() != pointer(), caso contrário false.

operator->

A função membro retorna stored_ptr.

operator*

A função membro retorna*stored_ptr.

unique_ptr operator=

Atribui o valor de um unique_ptr (ou um pointer-type) para o unique_ptr atual.

Requisitos

Cabeçalho: <memory>

Namespace: std

Consulte também

Referência

<memory>

Outros recursos

os membros do unique_ptr