ExpertiDict

C++ · Intermediário · Inglês · Técnico

unique pointer

juˈniːk ˈpɔɪntɚsubstantivo

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

Veja também

Todos os termos de C++