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
std::make_unique<Job>reserva y construye en una sola llamada; ningúnnewsuelto por ahí.->llega a través del puntero a los miembros deJob, igual que lo haría un puntero crudo.std::movepasa la reserva aownery dejajoben null; devolverlo lo mueve otra vez, a quien llama.
Palabras clave y builtins usados aquí
autointreturnstruct
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.
Paso 3 de 3 en Clases y RAII; paso 18 de 27 en Fundamentos del lenguaje.