Hace mas de 20 años que desarrollo en C y C++ con Proc C/C++ de Oracle y he visto la evolución del lenguaje desde el '98 cuando estudiaba en la universidad hasta hoy, y lo que explica el profe es excelente, los ejemplos, el uso de punteros y RAII, hasta la buena disposición a disipar las dudas!, Un maestro!. Saludos de Argentina y muy bueno este capitulo.
yo me dije a mi mismo, para poder seguir el codigo claro, bueno eso es un puntero a un entero de 32 bits inicializado a null y segui con lo del memory leak , pero como decia el mercenario, imaginar es bueno, saber es mejor. gracias profe
A Retroman solo le falta una cosa para ser 100% retro.... poner los colores de tipo Borland en su editor de codigo... y ya esta... ese fondo azul con letras blancas es nostálgico.
Si quiero seguir la Rule of Zero, con los smart pointers, supongo, que como los unique son unicos, no se pueden utilizar, porque si lo hago miembro de una clase, y creo una instancia de esta clase, y la intento copiar, no me dejará ¿O me estoy equivocando?
Creo que estás confundiendo términos. La Rule of Zero lo que dice es que siempre que puedas no definas ninguna (Zero) de las funciones miembro especiales de clase: (Constructores de copia, Asignaciones y Destructor). Como unique_ptr encapsula la reserva y liberación de un recurso usando patron RAII, si usas unique_ptr te ahorras tener que hacer eso manualmente, por lo que evitas tener que definir constructor y destructor en tu clase, y con ello tener que aplicar la Rule of Three/Five, que te diría que al haber creado alguna de las funciones miembro especiales, deberías crearlas todas.
Una dudilla profesor, según la explicación del video, 'std::make_unique' actúa como un patrón de construcción muy similar a un 'Método factoria' no? A su vez, la instrucción 'std::unique_ptr' hace que se restrinja esa creación a un solo objeto en memoria. Estamos delante de una factoría de singletons dónde 'std::unique_ptr' almacena y 'std::make_unique' crea?
Pues no es exactamente así, Victor. make_unique sí podría asimilarse a una fábrica, pues realiza la reserva y nos devuelve el puntero del tipo que solicitamos. Sin embargo, unique_ptr no se parece en nada a un Singleton. El problema es que interpretas la palabra "unique" erróneamente. Este "unique" se refiere a que sólo puede haber un Smart Pointer apuntando al objeto creado o, lo que es lo mismo, sólo puede haber un propietario. Esto no tiene nada que ver realmente con el concepto de Singleton, que sirve para asegurarse que de un tipo concreto sólo se crea una única instancia. Tanto de unique_ptr's como de los objetos a los que estos apuntan puedes crear tantas instancias como quieras. No limitan para nada en ese sentido. Como digo, el "unique" es un término de gestión de la propiedad, para garantizarse que sólo hay un responsable del recurso reservado (el unique_ptr) y que el responsable liberará el recurso al terminar el tiempo de vida.
Dios Santo, cómo se agradecen estos contenidos, además rematados con una utilísima descripción del vídeo. Mil gracias, profesor
Hace mas de 20 años que desarrollo en C y C++ con Proc C/C++ de Oracle y he visto la evolución del lenguaje desde el '98 cuando estudiaba en la universidad hasta hoy, y lo que explica el profe es excelente, los ejemplos, el uso de punteros y RAII, hasta la buena disposición a disipar las dudas!, Un maestro!. Saludos de Argentina y muy bueno este capitulo.
yo me dije a mi mismo, para poder seguir el codigo claro, bueno eso es un puntero a un entero de 32 bits inicializado a null y segui con lo del memory leak , pero como decia el mercenario, imaginar es bueno, saber es mejor. gracias profe
Gracias por el video, es de gran ayuda !!
Video muy interesante. Espero ansioso mas vídeos sobre punteros inteligentes. Un saludo profe.
A Retroman solo le falta una cosa para ser 100% retro.... poner los colores de tipo Borland en su editor de codigo... y ya esta... ese fondo azul con letras blancas es nostálgico.
¿Las letras no eran amarillas? Pregunto.
@@coulombio yo lo uso actualmente con NeoVim.. usa letras amarillas para reclamar la sintaxis de los tipos y operadores
Si quiero seguir la Rule of Zero, con los smart pointers, supongo, que como los unique son unicos, no se pueden utilizar, porque si lo hago miembro de una clase, y creo una instancia de esta clase, y la intento copiar, no me dejará ¿O me estoy equivocando?
Creo que estás confundiendo términos. La Rule of Zero lo que dice es que siempre que puedas no definas ninguna (Zero) de las funciones miembro especiales de clase: (Constructores de copia, Asignaciones y Destructor). Como unique_ptr encapsula la reserva y liberación de un recurso usando patron RAII, si usas unique_ptr te ahorras tener que hacer eso manualmente, por lo que evitas tener que definir constructor y destructor en tu clase, y con ello tener que aplicar la Rule of Three/Five, que te diría que al haber creado alguna de las funciones miembro especiales, deberías crearlas todas.
Una dudilla profesor, según la explicación del video, 'std::make_unique' actúa como un patrón de construcción muy similar a un 'Método factoria' no? A su vez, la instrucción 'std::unique_ptr' hace que se restrinja esa creación a un solo objeto en memoria. Estamos delante de una factoría de singletons dónde 'std::unique_ptr' almacena y 'std::make_unique' crea?
Pues no es exactamente así, Victor. make_unique sí podría asimilarse a una fábrica, pues realiza la reserva y nos devuelve el puntero del tipo que solicitamos. Sin embargo, unique_ptr no se parece en nada a un Singleton. El problema es que interpretas la palabra "unique" erróneamente. Este "unique" se refiere a que sólo puede haber un Smart Pointer apuntando al objeto creado o, lo que es lo mismo, sólo puede haber un propietario. Esto no tiene nada que ver realmente con el concepto de Singleton, que sirve para asegurarse que de un tipo concreto sólo se crea una única instancia. Tanto de unique_ptr's como de los objetos a los que estos apuntan puedes crear tantas instancias como quieras. No limitan para nada en ese sentido. Como digo, el "unique" es un término de gestión de la propiedad, para garantizarse que sólo hay un responsable del recurso reservado (el unique_ptr) y que el responsable liberará el recurso al terminar el tiempo de vida.
👍, Saludos
Ahora C ++ que antes
C+=2.