Saltar al contenido

¿Por qué usar std::make_unique en C++17?

Si te encuentras con algún detalle que no comprendes puedes dejarlo en los comentarios y haremos todo lo necesario de ayudarte tan rápido como podamos.

Solución:

Tienes razón en que se eliminó el motivo principal. Todavía quedan los no use nuevo directrices y que es menos escribir razones (no tiene que repetir el tipo o utilizar la palabra new). Es cierto que esos no son argumentos sólidos, pero realmente me gusta no ver new en mi código.

Tampoco te olvides de la consistencia. Absolutamente deberías estar usando make_shared entonces usando make_unique es natural y se ajusta al patrón. Entonces es trivial cambiar std::make_unique(param) para std::make_shared(param) (o al revés) donde la sintaxis A requiere mucho más de una reescritura.

make_unique distingue T desde T[] y T[N], unique_ptr(new ...) no.

Puede obtener fácilmente un comportamiento indefinido pasando un puntero que fue new[]ed a un unique_ptro pasando un puntero que fue newed a un unique_ptr.

La razón es tener un código más corto sin duplicados. Comparar

f(std::unique_ptr(new MyClass(param)), g());
f(std::make_unique(param), g());

Ahorras MyClass, new y aparatos ortopédicos Sólo cuesta un carácter más en hacer en comparación con ptr.

Ten en cuenta difundir esta sección si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *