C++ · Intermediário · Inglês · Técnico
unique pointer
std::unique_ptr é um smart pointer de posse exclusiva: um só dono, sem cópia, apenas movimento. Libera o objeto no destrutor com custo quase igual ao de um ponteiro bruto.
Onde usar
É a escolha padrão para posse dinâmica. Em code review, a pergunta é por que não é um unique_ptr antes de aceitar um shared_ptr.
Em código
auto p = std::make_unique<std::string>("oi");
// auto q = p; // erro: cópia deletada
auto q = std::move(p); // p fica nulo
std::cout << *q;Exemplos
Make it a unique pointer; nobody else owns this object.
Faça disso um unique pointer; ninguém mais é dono desse objeto.
You can't copy a unique pointer, you have to move it.
Você não pode copiar um unique pointer, tem que movê-lo.
Cuidado
Copiar um unique_ptr não compila; transfira a posse com std::move.
Sinônimos
unique_ptr
Antônimos
shared pointer