Tutorial de C++ Moderno
Este tutorial tiene como objetivo proporcionar a los desarrolladores con experiencia una referencia rápida de las nuevas funciones de C++11/14/17/20. Cubre mejoras en la usabilidad del lenguaje, mejoras en tiempo de ejecución, nuevos contenedores, punteros inteligentes y gestión de memoria, expresiones regulares, programación concurrente y una vista previa de C++20.
Descripción del curso
Resumen del contenido
Esta guía está diseñada para proporcionar a desarrolladores experimentados una referencia rápida sobre las nuevas características de C++11/14/17/20. El contenido abarca mejoras en usabilidad del lenguaje, mejoras en tiempo de ejecución, el uso de nuevos contenedores, punteros inteligentes y gestión de memoria, expresiones regulares, programación concurrente y una vista previa de C++20.
Ponete al día rápidamente con C++11/14/17/20 y atraviesa la puerta de entrada a la programación moderna en C++.
Autor: 欧长坤 (Ou Changkun)
Agradecimientos: Licenciado bajo la licencia CC BY-NC-ND 4.0, gracias a todos los colaboradores de GitHub y al apoyo de la comunidad relacionada.
Objetivos de aprendizaje
- Identificar y verificar el entorno del compilador de C++ y la arquitectura objetivo utilizando herramientas de línea de comandos.
- Explicar la compatibilidad estándar y la historia de solapamiento entre C (C89, C99, C11) y C++ (C++98, C++1x).
- Implementar enlaces cruzados entre lenguajes mediante encabezados
extern "C"y flujos de compilación de múltiples etapas. - Resolver ambigüedades de punteros usando
nullptre implementar lógica de tiempo de compilación medianteconstexpryif constexpr. - Simplificar declaraciones complejas usando
auto,decltypey alias de tipo (using), asegurando un diseño orientado a objetos robusto conoverrideyfinal. - Diseñar código altamente genérico utilizando plantillas variádicas, expresiones de plegado y deducción de parámetros de plantilla no tipo.
- Definir e implementar expresiones Lambda usando diversos modos de captura (Valor, Referencia, Expresión y Genérica).
- Utilizar
std::functionystd::bindpara crear envoltorios flexibles de funciones y aplicaciones parciales de funciones. - Clasificar expresiones en Lvalues, Prvalues y Xvalues, y aplicar Semántica de Movimiento para optimizar la gestión de recursos de clases.
- Diferenciar entre los modelos de memoria y casos de uso de
std::array(tamaño fijo, pila) ystd::vector(tamaño dinámico, montículo).