typestar

Propiedad con unique_ptr en C++

Un solo dueño a la vez: std::unique_ptr borra lo que sostiene, y solo std::move puede cederlo.

#include <memory>
#include <string>
#include <utility>

struct Job {
    std::string name;
    int priority;
};

std::unique_ptr<Job> handoff() {
    auto job = std::make_unique<Job>("index", 3);
    job->priority = 1;
    std::unique_ptr<Job> owner = std::move(job);  // job is now null
    return owner;
}

Cómo funciona

  1. std::make_unique<Job> reserva y construye en una sola llamada; ningún new suelto por ahí.
  2. -> llega a través del puntero a los miembros de Job, igual que lo haría un puntero crudo.
  3. std::move pasa la reserva a owner y deja job en null; devolverlo lo mueve otra vez, a quien llama.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
15
Caracteres a escribir
283
Tokens
81
Ritmo de tres estrellas
70 tpm

Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 69 segundos.

Escribe este fragmento

Paso 3 de 3 en Clases y RAII; paso 18 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →