C++: Visão Geral e Toolchain¶
C++ é uma linguagem compilada e estaticamente tipada, padronizada pela ISO. Ela oferece estilos por valores, procedural, orientado a objetos, genérico e funcional, com controle direto sobre representação e vida dos recursos.
Esta trilha usa C++20 como base executável. A página oficial distingue padrões publicados de trabalho em andamento.
Objetivos de aprendizado¶
- distinguir pré-processamento, compilação, linking e execução;
- raciocinar sobre valores, referências, vida útil e posse;
- usar RAII em vez de limpeza manual;
- entender cópia, movimentação e restrições genéricas;
- selecionar contêineres e algoritmos por contrato; e
- escrever concorrência sem corridas de dados.
Um primeiro programa¶
Em implementação hosted, main é a entrada. Chegar à chave final retorna zero.
std::cout é um stream padrão disponibilizado por <iostream>.
Modelo de tradução¶
- pré-processamento trata
#includee condicionais; - compilação verifica regras e produz arquivo objeto;
- linking resolve definições em objetos e bibliotecas;
- o ambiente carrega e executa.
Uma unidade de tradução é aproximadamente um fonte após pré-processamento. Declaração introduz nome e tipo; definição fornece a entidade. A One Definition Rule controla definições por programa e definições idênticas entre unidades.
Categorias de diagnóstico e comportamento¶
- ill-formed, diagnostic required: exige ao menos um diagnóstico;
- ill-formed, no diagnostic required: inválido, sem diagnóstico obrigatório;
- implementation-defined: implementação escolhe e documenta;
- unspecified: uma alternativa permitida ocorre sem documentação obrigatória;
- comportamento indefinido: o padrão não impõe requisitos à execução.
Comportamento indefinido não é exceção. Parecer funcionar não valida acesso fora dos limites, uso após fim da vida ou corrida de dados.
Build básico¶
Warnings dependem da implementação e não provam correção. Builds de release, símbolos, sanitizers e otimização devem ser configurações intencionais distintas.
Sequência¶
Continue com tipos, valores e referências e RAII antes de usar ponteiros proprietários diretamente.