Espaços nominais
Variantes
Ações

std::unique_ptr::unique_ptr

De cppreference.com

<metanoindex/>

 
 
Biblioteca de utilitários
Digite apoio (basic types, RTTI, type traits)
Gerenciamento de memória dinâmica
De tratamento de erros
Utilidades do programa
Variadic funções
Data e hora
Objetos de função
(C++11)
Os operadores relacionais
Original:
Relational operators
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
rel_ops::operator!=
rel_ops::operator>
rel_ops::operator<=
rel_ops::operator>=
Pares e tuplas
Original:
Pairs and tuples
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
(C++11)
Troque, avançar e avançar
Original:
Swap, forward and move
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
(C++11)
(C++11)
(C++11)
 
Gerenciamento de memória dinâmica
Gerenciamento de memória de baixo nível
Alocadores
Original:
Allocators
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Uninitialized armazenamento
Original:
Uninitialized storage
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Ponteiros inteligentes
Original:
Smart pointers
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
(C++11)
(C++11)
(C++11)
(obsoleta)
(C++11)
Apoio a coleta de lixo
Original:
Garbage collection support
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Diversos
Original:
Miscellaneous
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
(C++11)
(C++11)
C Library
Original:
C Library
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
 
std :: unique_ptr
Funções de membro
Original:
Member functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
unique_ptr::unique_ptr
unique_ptr::~unique_ptr
unique_ptr::operator=
Modificadores
Original:
Modifiers
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
unique_ptr::release
unique_ptr::reset
unique_ptr::swap
Observadores
Original:
Observers
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
unique_ptr::get
unique_ptr::get_deleter
unique_ptr::operator bool
unique_ptr::operator*
unique_ptr::operator->
unique_ptr::operator[]
Não-membros funções
Original:
Non-member functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
 
<tbody> </tbody>
constexpr unique_ptr();
(1) (desde C++11)
explicit unique_ptr( pointer p );
(2) (desde C++11)
unique_ptr( pointer p, d1 );
(3) (desde C++11)
unique_ptr( pointer p, d2 );
(4) (desde C++11)
unique_ptr( unique_ptr&& u );
(5) (desde C++11)
constexpr unique_ptr( nullptr_t );
(6) (desde C++11)
template< class U, class E > unique_ptr( unique_ptr<U, E>&& u );
(7) (desde C++11)
template< class U > unique_ptr( auto_ptr<U>&& u );
(8) (desde C++11)
1)
Constrói um std::unique_ptr vazio.
Original:
Constructs an empty std::unique_ptr.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
2)
Constrói um std::unique_ptr que possui p, inicializar o ponteiro armazenado com p e de valor inicializar o deleter armazenados.
Original:
Constructs a std::unique_ptr which owns p, initializing the stored pointer with p and value-initializing the stored deleter.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
3-4)
Constrói um objeto que possui std::unique_ptr p, inicializar o ponteiro armazenado com p e inicializar um D deleter em baixo (depende se D é um tipo de referência)
Original:
Constructs a std::unique_ptr object which owns p, initializing the stored pointer with p and initializing a deleter D as below (depends upon whether D is a reference type)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
a)
Se D é referência não A tipo, então as assinaturas são:
Original:
If D is non-reference type A, then the signatures are:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
unique_ptr(pointer p, const A& d);
unique_ptr(pointer p, A&& d);
b)
Se D é um tipo A& lvalue-referência, então as assinaturas são:
Original:
If D is an lvalue-reference type A&, then the signatures are:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
unique_ptr(pointer p, A& d);
unique_ptr(pointer p, A&& d);
c)
Se D é um tipo const A& lvalue-referência, então as assinaturas são:
Original:
If D is an lvalue-reference type const A&, then the signatures are:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
unique_ptr(pointer p, const A& d);
unique_ptr(pointer p, const A&& d);
5)
Constrói um unique_ptr por transferência de propriedade de u para *this.
Original:
Constructs a unique_ptr by transferring ownership from u to *this.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
6)
Constrói um std::unique_ptr vazio.
Original:
Constructs an empty std::unique_ptr.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
7)
Constrói um unique_ptr por transferência de propriedade de u para *this, onde u é construído com um deleter especificado (E). Ele depende se E é um tipo de referência, como a seguir:
Original:
Constructs a unique_ptr by transferring ownership from u to *this, where u is constructed with a specified deleter (E). It depends upon whether E is a reference type, as following:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
a)
se E é um tipo de referência, este deleter é construído a partir de cópia de deleter u.
Original:
if E is a reference type, this deleter is copy constructed from u's deleter.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
b)
se E é um tipo de referência não, este é deleter movimento construído a partir de deleter u de.
Original:
if E is a non-reference type, this deleter is move constructed from u's deleter.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
8)
Constrói um unique_ptr onde o ponteiro armazenado é inicializado com u.release() eo deleter valor armazenado é inicializado.
Original:
Constructs a unique_ptr where the stored pointer is initialized with u.release() and the stored deleter is value-initialized.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Parâmetros

p -
um apontador para um objecto de gerir
Original:
a pointer to an object to manage
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
d1,d2 -
uma deleter usar para destruir o objeto
Original:
a deleter to use to destroy the object
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
u -
outro ponteiro inteligente para adquirir a propriedade de
Original:
another smart pointer to acquire the ownership from
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Exceções

noexcept specification:  
<tbody> </tbody>
noexcept
  (desde C++11)

Exemplo

#include <iostream>
#include <memory>

struct Foo {
    Foo() { std::cout << "Foo...\n"; }
    ~Foo() { std::cout << "~Foo...\n\n"; }
};

struct D{

    D(){};

    D(const D& other){
        std::cout << "call D const copy constructor... \n";
    }

    D(D& other){
        std::cout << "call D copy constructor... \n";
    }

    D(D&& other){
        std::cout << "call D move constructor... \n";
    }

    void operator () (Foo* p) const {
        std::cout << "Call delete for Foo object...\n";
        delete p;
    };
};

int main()
{
    //constructor (1)
    std::cout << "Example constructor(1)...\n\n";
    std::unique_ptr<Foo> up;

    //constructor (2)
    std::cout << "Example constructor(2)...\n";
    Foo* f = new Foo();
    std::unique_ptr<Foo> up2(f); //up2 now owns f
    up2.reset();

    //constructor (3&4)
    std::cout << "Example constructor(3&4)...\n";

    //D is not an lvalue-reference - d is a non-const rvalue
    std::unique_ptr<Foo, D> up3(new Foo(), D()); //D must be MoveConstructible
    up3.reset();

    //D is not an lvalue-refernce - d is a left value
    D d2;
    std::unique_ptr<Foo, D> up4(new Foo(), d2); //D must be Copyconstructible
    up4.reset();

    //D is a left value reference type
    D d3;
    std::unique_ptr<Foo, D&> up5(new Foo(), d3); //up3 holds a reference to d3
    up5.reset();

    //D is a const left value reference type
    const D d4;
    std::unique_ptr<Foo, const D&> up6(new Foo(), d4);
    up6.reset();

    //constructor (5)
    std::cout << "Example constructor(5)...\n";
    std::unique_ptr<Foo> up7(new Foo());
    std::unique_ptr<Foo> up8(move(up7)); //ownership is transfered to up8
    up8.reset();

    //constructor 6
    std::cout << "Example constructor(6)...\n\n";
    std::unique_ptr<Foo> up9(nullptr);

    //constructor 7 - D is move constructed
    D d;
    std::cout << "Example constructor(7)...\n";
    std::unique_ptr<Foo, D> up10(new Foo(), d);     //D is not a reference
    std::unique_ptr<Foo, D> up11(move(up10));       //D is move constructed
    up11.reset();

    //constructor 7 - D is copy constructed
    std::unique_ptr<Foo, D&> up12(new Foo(), d);    //D is a reference
    std::unique_ptr<Foo, D> up13(move(up12));       //D is copy constructed
    up13.reset();

    //constructor 8
    std::cout << "Example constructor(8)...\n";
    std::auto_ptr<Foo> up14(new Foo());
    std::unique_ptr<Foo> up15(move(up14));
    up15.reset();

}