Always auto: Una sintaxis moderna para C++

Artículos de la serie:

Introducción


En sus más de treinta años de evolución, C++ ha adquirido estilos diversos con los que inicializar sus variables, hasta el punto de no existir un consenso definitivo en su comunidad de desarrolladores acerca de cuál resulta preferible. Sin embargo, tras los últimos estándares del lenguaje (particularmente C++17) podemos observar una clara tendencia a adoptar una sintaxis declarativa de izquierda-a-derecha, en sintonía con lenguajes más recientes como Go, Rust o Swift.

Punteros: Qué son y cómo trabajar con ellos

Última actualización: 28 de julio de 2020.

Definiciones básicas


Al trabajar con el lenguaje C++, el empleo de punteros resulta inevitable, ya sea para introducir semántica de referencia en nuestros códigos, alojar objetos en el free store, emplear polimorfismo dinámico u operar con estructuras dinámicas de datos y sus iteradores. Familiarizarse con este tipo de variables, hasta el punto de convertir su manipulación en una tarea natural para el programador, requiere esfuerzo y numerosas horas de práctica. Sin embargo, los conceptos básicos involucrados en su aprendizaje resultan extremadamente simples.

Un puntero es una variable que almacena la dirección en memoria de otro objeto. Como tal, el espacio ocupado en memoria por un puntero (independientemente del tipo de objeto que referencie) coincide con el número de bytes necesario para especificar una dirección de memoria: 4 bytes en la arquitectura x86, 8 bytes en la arquitectura x86-64.

Reflexión estática y serialización de agregados en JSON

Introducción


Le Penseur - Auguste Rodin
Nota: Este artículo actualiza un post originalmente publicado en 2015 acerca de la gestión de ficheros. Esta nueva versión analiza la codificación/descodificación de agregados de datos mediante la biblioteca JSON for Modern C++, así como la introducción de reflexión estática mediante Boost.Hana con el fin de simplificar la tarea del programador.



La transformación de un agregado de datos diversos en un formato legible de intercambio como JSON es una acción recurrente para la que existen múltiples soluciones en C++. Según las necesidades del programador, disponemos de una amplia variedad de bibliotecas de serialización con distintos grados de adaptación a la biblioteca estándar y niveles de rendimiento. Puedes consultar un benchmark exhaustivo a este respecto en el siguiente portal:

https://github.com/miloyip/nativejson-benchmark