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
Há sete construtores para unique_ptr. |
Typedefs
Um sinônimo para o parâmetro de modelo Del. |
|
Um sinônimo para o parâmetro de modelo Type. |
|
Um sinônimo para Del::pointer se definido, caso contrário Type *. |
Funções membro
Retorna stored_ptr. |
|
Retorna uma referência para stored_deleter. |
|
Armazena pointer() em stored_ptr e retorna seu conteúdo anterior. |
|
Libera o recurso possuído atualmente e aceita um novo recurso. |
|
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. |
Atribui o valor de um unique_ptr (ou um pointer-type) para o unique_ptr atual. |
Requisitos
Cabeçalho: <memory>
Namespace: std