C++那些事
——
光城的实验室
C++那些事 | Stories About C Plus Plus — Site de aprendizado de C++ em chinês
简体中文
English
日本語
Español
Русский
Português
हिन्दी
Inicializando a pesquisa
Light-City/CPlusPlusThings
Início
Visão geral do projeto
Guia de compilação e execução
Fundamentos e além
Análise do código-fonte
Idioms
C++ moderno
Ferramentas
Benchmarks
Projetos práticos
Leitura e dicas
Concorrência
Recursos de aprendizado
Contatar o autor
C++那些事
Aprenda C++ na prática — do iniciante ao avançado do jeito mais rápido.
Começar
Sobre o autor
C++那些事
Light-City/CPlusPlusThings
Início
Visão geral do projeto
Guia de compilação e execução
Fundamentos e além
Fundamentos e além
C++ const: constantes e qualificadores
C++ static: membros e tempo de vida
C++ vptr e vtable
Polimorfismo estilo C para C++
C++: ponteiros e referências
C++: macros e compilação condicional
O ponteiro this em C++
Funções inline em C++
O operador sizeof em C++
Funções virtuais puras e classes abstratas
Funções virtual em C++
A palavra-chave volatile em C++
Asserções em C++
Campos de bits em C++
C++ extern e linkage
C++ struct
struct vs class
C++ union
A palavra-chave explicit em C++
C++ friend
C++ using: declarações e aliases
Namespaces em C++
C++ enum
C++ decltype
Mecanismos avançados da linguagem
Mecanismos avançados da linguagem
A palavra-chave mutable em C++
A família const em C++
Compatibilidade ABI de string em C++
C++ ref e reference_wrapper
std::function a fundo
Ponteiros inteligentes como parâmetros
Pegadinhas da lista de inicialização
Múltiplos valores de retorno
Destrutores: C++ vs Rust
Inicialização e atribuição
restrict e otimização
Desambiguação de templates
Recursão de cauda em C++
vector: resize e reverse
O operador de desreferência *
Análise do código-fonte
Análise do código-fonte
Análise STL: array
Análise STL: deque
Análise STL: queue e stack
Análise STL: list
Análise STL: vector
Análise STL: typename
Técnicas de traits na STL
Análise STL: iteradores
STL EBO: otimização de base vazia
Árvore rubro-negra na STL
STL set e multiset
STL map e multimap
STL hashtable
Escrevendo uma hash table à mão
Análise STL: unordered_map
std::string a fundo
Perguntas de entrevista: std::string
Invalidação de iteradores na STL
Idioms
Idioms
Idiom: lista de inicialização
enum class: enums com escopo
Gestão de recursos com RAII
Idiom: copy-and-swap
Idiom: Pimpl
Idiom: Mixin
Injeção de dependência em C++
Trígrafos em C++
Evitando construtores padrão
Idiom: avaliação preguiçosa
Header-Only vs separação de implementação
Templates de classe sobre funções
Idiom: tabela de consulta
Ponteiros para membros e info de tipo
O padrão Singleton
C++ moderno
C++ moderno
C++11
C++11
Panorama do C++11
std::move: princípio e uso
Templates variádicos
std::bind vs lambda
C++17
C++17
17 recursos avançados do C++17
C++17 std::string_view
C++17: vinculações estruturadas
C++17: templates de variável
C++17: [[nodiscard]]
C++17: recursos PMR
C++17: CTAD
C++17 std::variant
C++17 optional_ref
C++17: dedução auto em templates
C++20
C++20
Guia dos recursos do C++20
Introdução às corrotinas do C++20
A biblioteca Ranges do C++20
Módulos do C++20
Lambdas no C++20 (parte 1)
Canais do C++20 na prática
std::span: design e armadilhas
C++20: endianness
C++20: constexpr e o operador vírgula
C++20: [[no_unique_address]]
O operador <=>
Concepts do C++20
C++20: [[likely]] e [[unlikely]]
Ferramentas
Ferramentas
CMake: fundamentos e prática
Construindo C++ com Bazel
Construindo C++ com Meson
Primeiros passos com Conan
Depurando C++ com GDB
Depurando C++ com LLDB
O macro de depuração dbg-macro
Depuração com Bazel e LLDB
Extensões Python do GDB
Caçando vazamentos de memória
Modo debug da STL
Saída rápida de contêineres STL
C++ em Jupyter Notebooks
C++ Insights: visão de compilação
Converter string em int
Opções do GCC explicadas
Formatando C++ no VS Code
AddressSanitizer
Detecção de vazamentos de memória
Análise com Valgrind Massif
Benchmarks
Benchmarks
memcpy vs std::copy
Benchmarks de SSO em std::string
Polimorfismo: virtual, CRTP e variant
Projetos práticos
Projetos práticos
Curso intensivo de C++ em 10 dias
Exercícios-chave de C++
Servidor HTTP com corrotinas C++20
Demo de encurtador de URLs
Um pequeno projeto gRPC
Acelerando Python com pybind11
Google Benchmark
Implementando FnOnce à mão
IPC na prática
C++17 e SQLite: tamanho de diretórios
Serialização ZeroCopy com Protobuf
Design de uma calculadora de pilha
Leitura e dicas
Leitura e dicas
Seis formas de dividir uma string
Como ler C++ open-source
Imprimir 1-100 sem laços
Um trecho divertido de C++
Notas sobre extensões do CPython
Notas do libcurl com C++
Concorrência
Concorrência
Lendo C++ Concurrency in Action
Primeiros passos com threads
std::thread e jthread
Interior do std::thread
Depurando deadlocks
GDB multi-thread all-stop
Verificações com Helgrind
False sharing e linhas de cache
STL paralela do C++17
Vetorização SIMD em C++
O loop de eventos do libev
Recursos de aprendizado
Recursos de aprendizado
30 aulas de C++ moderno (GeekTime)
Base de conhecimento de C++
Tutoriais de C++ no Bilibili
Recursos e livros de C++
Contatar o autor
Início
Última atualização:2026-10-12
Comentários
Voltar ao topo