Tutorial de C++ Moderno
Este tutorial tem como objetivo fornecer aos desenvolvedores experientes uma referência rápida sobre os novos recursos do C++11/14/17/20. Ele aborda melhorias na usabilidade da linguagem, melhorias de desempenho em tempo de execução, novos contêineres, ponteiros inteligentes e gerenciamento de memória, expressões regulares, programação concorrente e uma prévia do C++20.
Visão Geral do Curso
Resumo do Conteúdo
Este tutorial foi projetado para fornecer aos desenvolvedores experientes uma referência rápida sobre os novos recursos do C++11/14/17/20. O conteúdo abrange melhorias na usabilidade da linguagem, melhorias em tempo de execução, o uso de novos contêineres, ponteiros inteligentes e gerenciamento de memória, expressões regulares, programação concorrente e uma prévia do C++20.
Acelere seu aprendizado com o C++11/14/17/20 e entre pela porta de entrada da programação moderna em C++.
Autor: 欧长坤 (Ou Changkun)
Agradecimentos: Licenciado sob a licença CC BY-NC-ND 4.0, agradecimentos a todos os contribuidores do GitHub e à comunidade relacionada.
Objetivos de Aprendizagem
- Identificar e verificar o ambiente do compilador C++ e a arquitetura-alvo usando ferramentas de linha de comando.
- Explicar a compatibilidade padrão e a história de sobreposição entre C (C89, C99, C11) e C++ (C++98, C++1x).
- Implementar vinculação cruzada de linguagens funcionais usando cabeçalhos
extern "C"e fluxos de compilação de múltiplos estágios. - Resolver ambiguidades de ponteiros usando
nullptre implementar lógica em tempo de compilação comconstexpreif constexpr. - Simplificar declarações complexas usando
auto,decltypee alias de tipo (using), garantindo um design robusto orientado a objetos comoverrideefinal. - Projetar código altamente genérico usando templates variádicos, expressões fold e dedução de parâmetros de template não-tipo.
- Definir e implementar expressões Lambda usando diversos modos de captura (Valor, Referência, Expressão e Genérico).
- Utilizar
std::functionestd::bindpara criar invólucros de função flexíveis e aplicações parciais de funções. - Classificar expressões em Lvalues, Prvalues e Xvalues, e aplicar Semântica de Movimentação para otimizar o gerenciamento de recursos de classe.
- Diferenciar os modelos de memória e casos de uso de
std::array(tamanho fixo, pilha) estd::vector(tamanho dinâmico, heap).