C++那些事
——
光城的实验室
C++那些事 | Stories About C Plus Plus — Sitio de aprendizaje de C++ en chino
简体中文
English
日本語
Español
Русский
Português
हिन्दी
Inicializando búsqueda
Light-City/CPlusPlusThings
Inicio
Descripción del proyecto
Guía de compilación y ejecución
Fundamentos y más
Análisis del código fuente
Idioms
C++ moderno
Herramientas
Benchmarks
Proyectos prácticos
Lectura y consejos
Concurrencia
Recursos de aprendizaje
Contactar al autor
C++那些事
Aprende C++ con la práctica: de principiante a avanzado por el camino más rápido.
Empezar
Sobre el autor
C++那些事
Light-City/CPlusPlusThings
Inicio
Descripción del proyecto
Guía de compilación y ejecución
Fundamentos y más
Fundamentos y más
C++ const: constantes y calificadores
C++ static: miembros y duración
C++ vptr y vtable
Polimorfismo de C++ al estilo C
C++: punteros y referencias
C++: macros y compilación condicional
El puntero this en C++
Funciones inline en C++
El operador sizeof en C++
Funciones virtuales puras y clases abstractas
Funciones virtual en C++
La palabra clave volatile en C++
Asersiones en C++
Campos de bits en C++
C++ extern y enlazado
C++ struct
struct vs class
C++ union
La palabra clave explicit en C++
C++ friend
C++ using: declaraciones y alias
Espacios de nombres en C++
C++ enum
C++ decltype
Mecanismos avanzados del lenguaje
Mecanismos avanzados del lenguaje
La palabra clave mutable en C++
La familia const en C++
Compatibilidad ABI de string en C++
C++ ref y reference_wrapper
std::function a fondo
Punteros inteligentes como parámetros
Puntos de la lista de inicialización
Valores de retorno múltiples
Destructores: C++ vs Rust
Inicialización y asignación
restrict y optimización
Desambiguación de plantillas
Recursión de cola en C++
vector: resize y reverse
El operador de desreferencia *
Análisis del código fuente
Análisis del código fuente
Análisis STL: array
Análisis STL: deque
Análisis STL: queue y stack
Análisis STL: list
Análisis STL: vector
Análisis STL: typename
Técnicas traits en STL
Análisis STL: iteradores
STL EBO: optimización de base vacía
Árbol rojo-negro en STL
STL set y multiset
STL map y multimap
STL hashtable
Implementación manual de una tabla hash
Análisis STL: unordered_map
std::string a fondo
Preguntas de entrevista: std::string
Invalidación de iteradores en STL
Idioms
Idioms
Idiom: lista de inicialización
enum class: enumeraciones con ámbito
Gestión de recursos con RAII
Idiom: copy-and-swap
Idiom: Pimpl
Idiom: Mixin
Inyección de dependencias en C++
Trigramas en C++
Evitar constructores por defecto
Idiom: evaluación perezosa
Header-Only vs separación de implementación
Plantillas de clase sobre funciones
Idiom: tabla de búsqueda
Punteros a miembros e información de tipos
El patrón Singleton
C++ moderno
C++ moderno
C++11
C++11
Panorama de C++11
std::move: principios y uso
Plantillas variádicas
std::bind frente a lambda
C++17
C++17
17 características avanzadas de C++17
C++17 std::string_view
C++17: enlaces estructurados
C++17: plantillas de variable
C++17: [[nodiscard]]
C++17: recursos PMR
C++17: CTAD
C++17 std::variant
C++17 optional_ref
C++17: deducción auto en plantillas
C++20
C++20
Guía de las novedades de C++20
Introducción a las corrutinas de C++20
La librería Ranges de C++20
Módulos de C++20
Lambdas en C++20 (parte 1)
Canales de C++20 en la práctica
std::span: diseño y trampas
C++20: endianness
C++20: constexpr y el operador coma
C++20: [[no_unique_address]]
El operador <=>
Concepts de C++20
C++20: [[likely]] y [[unlikely]]
Herramientas
Herramientas
CMake: fundamentos y práctica
Construir C++ con Bazel
Construir C++ con Meson
Primeros pasos con Conan
Depurar C++ con GDB
Depurar C++ con LLDB
dbg-macro para depurar
Depuración con Bazel y LLDB
Extensiones Python de GDB
Caza de fugas de memoria en la práctica
Modo debug de la STL
Salida rápida de contenedores STL
C++ en Jupyter Notebooks
C++ Insights: vista en compilación
Convertir string a int
Opciones de GCC explicadas
Formatear C++ en VS Code
AddressSanitizer
Detección de fugas de memoria
Análisis con Valgrind Massif
Benchmarks
Benchmarks
memcpy frente a std::copy
Benchmarks de SSO en std::string
Polimorfismo: virtual, CRTP y variant
Proyectos prácticos
Proyectos prácticos
Curso intensivo de C++ en 10 días
Ejercicios clave de C++
Servidor HTTP con corutinas C++20
Demo de acortador de URLs
Un pequeño proyecto con gRPC
Acelerar Python con pybind11
Google Benchmark
Implementando FnOnce a mano
IPC en la práctica
C++17 y SQLite: tamaños de directorios
Serialización ZeroCopy con Protobuf
Diseño de una calculadora de pila
Lectura y consejos
Lectura y consejos
Seis formas de dividir un string
Cómo leer C++ de código abierto
Imprimir 1-100 sin bucles
Un fragmento de C++ divertido
Notas sobre extensiones de CPython
Notas de libcurl con C++
Concurrencia
Concurrencia
Guía de C++ Concurrency in Action
Primeros pasos con multihilo
std::thread y jthread
Interior de std::thread
Depuración de interbloqueos
GDB multihilo: all-stop
Detección con Helgrind
False sharing y líneas de caché
STL paralela de C++17
Vectorización SIMD en C++
El bucle de eventos de libev
Recursos de aprendizaje
Recursos de aprendizaje
30 lecciones de C++ moderno (GeekTime)
Base de conocimiento de C++
Tutoriales de C++ en Bilibili
Recursos y libros de C++
Contactar al autor
Inicio
Última actualización:2026-10-12
Comentarios
Volver al principio