Pular para o conteúdo

Trilha de estudo

Trilha C/C++: tudo o que estudar, tópico por tópico

Avaliacao abrangente de C/C++ cobrindo fundamentos de C, programacao orientada a objetos, templates, containers e algoritmos da STL, gerenciamento de memoria, ponteiros inteligentes, semantica de movimentacao, multithreading, metaprogramacao e recursos modernos de C++ (C++11 a C++23).

Resposta curta

Para aprender C/C++, percorra 6 módulos e 24 tópicos na ordem em que um apoia o próximo. Comece por Fundamentos de C e siga para Basico de C++ e C++ Orientado a Objetos. Use o mapa como checklist, ou meça seu nível e estude só o que falta.

6
módulos
24
tópicos
45
min para avaliar

O que você vai estudar

Os tópicos estão agrupados por módulo. Abra um para ver os objetivos e os conceitos-chave.

1 · Fundamentos de C4 tópicos
  • Variaveis & Tipos

    Tipos de dados fundamentais (int, float, double, char, bool), modificadores de tipo (short, long, unsigned), conversao de tipos, sizeof, typedef, aliases de tipo, qualificador const, volatile

    Objetivos

    • Declarar variaveis com tipos e modificadores apropriados
    • Compreender regras de conversao e promocao de tipos

    Conceitos-chave

    • tipos de dados fundamentais
    • modificadores de tipo (short, long, unsigned)
    • conversao de tipo implicita e explicita
    • operador sizeof
    • typedef e aliases com using
    • qualificador const
    • palavra-chave volatile
    • regras de promocao de tipo
  • Fluxo de Controle

    if/else, switch/case, lacos for, while/do-while, break/continue, operador ternario, goto, lacos aninhados, avaliacao de curto-circuito

    Objetivos

    • Escrever construcoes condicionais e de laco corretas
    • Compreender o comportamento de fall-through do switch

    Conceitos-chave

    • instrucoes if/else
    • switch/case com fall-through
    • laco for
    • while e do-while
    • break e continue
    • operador ternario
    • avaliacao de curto-circuito
    • lacos aninhados
  • Funcoes

    Declaracoes e definicoes de funcoes, passagem de parametros (por valor), tipos de retorno, prototipos de funcao, argumentos padrao, funcoes inline, recursao, sobrecarga de funcoes

    Objetivos

    • Escrever funcoes com assinaturas e prototipos adequados
    • Compreender semantica de passagem por valor e recursao

    Conceitos-chave

    • declaracao vs definicao de funcao
    • passagem por valor
    • tipos de retorno
    • prototipos de funcao
    • argumentos padrao
    • funcoes inline
    • recursao
    • sobrecarga de funcoes
  • Ponteiros & Arrays

    Declaracao e desreferenciacao de ponteiros, aritmetica de ponteiros, arrays, strings C, arrays multidimensionais, ponteiros void, ponteiros nulos, ponteiros de funcao

    Objetivos

    • Usar ponteiros e aritmetica de ponteiros corretamente
    • Compreender o decay de array para ponteiro

    Conceitos-chave

    • declaracao e desreferenciacao de ponteiros
    • aritmetica de ponteiros
    • arrays e decay para ponteiros
    • strings C (char*)
    • arrays multidimensionais
    • ponteiros void
    • nullptr
    • ponteiros de funcao
2 · Basico de C++4 tópicos
  • Strings & E/S

    std::string, operacoes com strings, streams de E/S do C++ (cin, cout, cerr), E/S de arquivo (ifstream, ofstream), string streams, getline, formatacao com iomanip

    Objetivos

    • Usar std::string e streams de E/S efetivamente
    • Ler e escrever arquivos com fstream

    Conceitos-chave

    • std::string
    • concatenacao e comparacao de strings
    • cin/cout/cerr
    • ifstream/ofstream
    • stringstream
    • getline
    • formatacao com iomanip
    • string_view (C++17)
  • Referencias

    Referencias lvalue, referencias const, passagem por referencia, referencia vs ponteiro, referencias pendentes, colapso de referencias, retorno de referencias

    Objetivos

    • Passar argumentos por referencia eficientemente
    • Distinguir referencias de ponteiros

    Conceitos-chave

    • referencia lvalue (&)
    • referencia const (const &)
    • passagem por referencia
    • referencia vs ponteiro
    • referencias pendentes
    • regras de colapso de referencias
    • retorno de referencias com seguranca
    • referencia para const estende lifetime
  • Namespaces

    Declaracao de namespace, diretivas using, declaracoes using, namespaces aninhados, namespaces anonimos, namespaces inline, aliases de namespace, ADL (busca dependente de argumento)

    Objetivos

    • Organizar codigo com namespaces
    • Compreender ADL e suas implicacoes

    Conceitos-chave

    • declaracao de namespace
    • diretiva using
    • declaracao using
    • namespaces aninhados (C++17)
    • namespaces anonimos
    • namespaces inline
    • aliases de namespace
    • ADL (busca de Koenig)
  • Auto & Inferencia de Tipos

    Palavra-chave auto, decltype, regras de deducao de tipo, tipos de retorno trailing, structured bindings (C++17), auto com referencias e const, decltype(auto)

    Objetivos

    • Aplicar auto e decltype para codigo mais limpo
    • Usar structured bindings para desempacotar tuplas/structs

    Conceitos-chave

    • palavra-chave auto
    • decltype
    • regras de deducao de tipo
    • tipos de retorno trailing
    • structured bindings
    • auto com const e referencias
    • decltype(auto)
    • CTAD (deducao de argumento de template de classe)
3 · C++ Orientado a Objetos4 tópicos
  • Classes

    Definicao de classe, especificadores de acesso, construtores, destrutores, listas de inicializacao de membros, ponteiro this, membros estaticos, funcoes friend, inicializacao agregada

    Objetivos

    • Projetar classes com encapsulamento adequado
    • Aplicar a Regra de Tres/Cinco/Zero

    Conceitos-chave

    • class vs struct
    • public/private/protected
    • construtores e destrutores
    • lista de inicializacao de membros
    • ponteiro this
    • membros estaticos
    • funcoes friend
    • Regra de Tres/Cinco/Zero
  • Heranca

    Heranca simples e multipla, controle de acesso em heranca, classes base virtuais, ordem de construtores/destrutores, fatiamento, problema do diamante, membros protegidos

    Objetivos

    • Implementar hierarquias de heranca corretamente
    • Resolver o problema do diamante com classes base virtuais

    Conceitos-chave

    • heranca simples
    • heranca multipla
    • heranca public/protected/private
    • classes base virtuais
    • ordem de chamada de construtores/destrutores
    • fatiamento de objetos
    • problema do diamante
    • declaracoes using em classes derivadas
  • Polimorfismo

    Funcoes virtuais, funcoes virtuais puras, classes abstratas, mecanismo vtable, especificadores override e final, dynamic_cast, RTTI, destrutores virtuais

    Objetivos

    • Implementar polimorfismo em tempo de execucao com funcoes virtuais
    • Compreender o mecanismo de vtable

    Conceitos-chave

    • funcoes virtuais
    • funcoes virtuais puras
    • classes abstratas
    • vtable e vptr
    • especificador override
    • especificador final
    • dynamic_cast e RTTI
    • destrutores virtuais
  • Sobrecarga de Operadores

    Sobrecarga de operadores aritmeticos, de comparacao e de stream, sobrecargas membro vs nao-membro, operadores de conversao, operadores de subscrito e chamada de funcao, literais definidos pelo usuario

    Objetivos

    • Sobrecarregar operadores seguindo convencoes C++
    • Escolher entre sobrecargas membro e nao-membro

    Conceitos-chave

    • sobrecarga de operadores aritmeticos
    • operadores de comparacao (spaceship <=> C++20)
    • operadores de stream (<<, >>)
    • sobrecargas membro vs nao-membro
    • operadores de conversao
    • operador de subscrito []
    • operador de chamada de funcao ()
    • literais definidos pelo usuario
4 · STL & Templates4 tópicos
  • Templates

    Templates de funcao, templates de classe, especializacao de template, especializacao parcial, parametros de template nao-tipo, templates variadicos, SFINAE, concepts (C++20)

    Objetivos

    • Escrever codigo generico com templates de funcao e classe
    • Aplicar especializacao de template e SFINAE

    Conceitos-chave

    • templates de funcao
    • templates de classe
    • especializacao de template
    • especializacao parcial
    • parametros de template nao-tipo
    • templates variadicos
    • SFINAE
    • concepts (C++20)
  • Containers da STL

    Containers sequenciais (vector, deque, list, array, forward_list), containers associativos (set, map, multiset, multimap), containers nao-ordenados (unordered_map, unordered_set), adaptadores de container (stack, queue, priority_queue)

    Objetivos

    • Escolher containers apropriados por caso de uso e complexidade
    • Compreender regras de invalidacao de iteradores

    Conceitos-chave

    • std::vector
    • std::map / std::unordered_map
    • std::set / std::unordered_set
    • std::deque / std::list
    • std::array
    • std::stack / std::queue
    • std::priority_queue
    • garantias de complexidade de containers
  • Iteradores & Algoritmos

    Categorias de iteradores (input, output, forward, bidirecional, acesso aleatorio), algoritmos da STL (sort, find, transform, accumulate, copy), ranges (C++20), views

    Objetivos

    • Aplicar algoritmos da STL efetivamente
    • Usar ranges C++20 para processamento componivel de dados

    Conceitos-chave

    • categorias de iteradores
    • begin/end e cbegin/cend
    • std::sort / std::find / std::transform
    • std::accumulate / std::reduce
    • std::copy / std::move
    • std::ranges (C++20)
    • range views e pipes
    • comparadores customizados
  • Expressoes Lambda

    Sintaxe de lambda, clausulas de captura (por valor, por referencia, init-capture), lambdas genericas, lambdas mutaveis, std::function, std::bind, funcoes de ordem superior

    Objetivos

    • Escrever lambdas com modos de captura apropriados
    • Usar lambdas com algoritmos da STL

    Conceitos-chave

    • sintaxe de lambda [capturas](params){corpo}
    • captura por valor [=]
    • captura por referencia [&]
    • init-capture (C++14)
    • lambdas genericas (parametros auto)
    • lambdas mutaveis
    • std::function
    • lambda imediatamente invocada
5 · Memoria & Concorrencia4 tópicos
  • Ponteiros Inteligentes

    std::unique_ptr, std::shared_ptr, std::weak_ptr, deleters customizados, make_unique/make_shared, transferencia de ownership, enable_shared_from_this, aliasing de ponteiros

    Objetivos

    • Escolher o ponteiro inteligente adequado para cada modelo de ownership
    • Evitar armadilhas comuns com ponteiros inteligentes

    Conceitos-chave

    • std::unique_ptr
    • std::shared_ptr
    • std::weak_ptr
    • std::make_unique / std::make_shared
    • deleters customizados
    • transferencia de ownership (std::move)
    • enable_shared_from_this
    • construtor de aliasing
  • Semantica de Movimentacao

    Referencias rvalue, std::move, construtores de movimentacao, atribuicao por movimentacao, perfect forwarding, std::forward, elisao de copia, RVO/NRVO

    Objetivos

    • Implementar construtores e operadores de atribuicao por movimentacao
    • Aplicar perfect forwarding corretamente

    Conceitos-chave

    • referencias rvalue (&&)
    • std::move
    • construtor de movimentacao
    • operador de atribuicao por movimentacao
    • perfect forwarding
    • std::forward
    • elisao de copia (RVO/NRVO)
    • referencias universais
  • Multithreading

    std::thread, std::mutex, std::lock_guard, std::unique_lock, variaveis de condicao, std::async, std::future, std::promise, operacoes atomicas, seguranca de threads

    Objetivos

    • Escrever codigo thread-safe com mutexes e atomicos
    • Usar async/future para execucao concorrente de tarefas

    Conceitos-chave

    • std::thread
    • std::mutex / std::lock_guard
    • std::unique_lock
    • std::condition_variable
    • std::async / std::future
    • std::promise
    • std::atomic
    • corridas de dados e seguranca de threads
  • Gerenciamento de Memoria

    new/delete, placement new, alinhamento de memoria, alocadores, vazamentos de memoria, stack vs heap, padrao RAII, alocadores customizados, pools de memoria

    Objetivos

    • Aplicar RAII para gerenciamento deterministico de recursos
    • Detectar e prevenir vazamentos de memoria

    Conceitos-chave

    • operadores new/delete
    • placement new
    • alinhamento de memoria (alignas, alignof)
    • alocadores customizados
    • padrao RAII
    • alocacao em stack vs heap
    • pools de memoria
    • deteccao de vazamento de memoria
6 · C++ Avancado4 tópicos
  • Recursos Modernos de C++

    Recursos C++17 (optional, variant, any, filesystem, if constexpr), recursos C++20 (concepts, modules, coroutines, comparacao three-way), recursos C++23 (expected, deducing this, std::print)

    Objetivos

    • Aplicar tipos vocabulario modernos de C++ (optional, variant)
    • Usar concepts para restringir templates

    Conceitos-chave

    • std::optional
    • std::variant / std::visit
    • std::any
    • std::filesystem
    • if constexpr
    • concepts e requires (C++20)
    • modules (C++20)
    • coroutines (C++20)
  • Metaprogramacao com Templates

    Computacao em tempo de compilacao, type traits (std::is_integral, std::enable_if), constexpr if, consteval, tecnicas SFINAE, tag dispatch, CRTP, expression templates

    Objetivos

    • Aplicar metaprogramacao com templates para computacao em tempo de compilacao
    • Usar CRTP e design baseado em politicas

    Conceitos-chave

    • type traits (std::is_*, std::enable_if)
    • computacao constexpr
    • consteval (C++20)
    • tecnicas SFINAE
    • tag dispatch
    • CRTP (Curiously Recurring Template Pattern)
    • expression templates
    • design baseado em politicas
  • Otimizacao de Desempenho

    Estruturas de dados cache-friendly, predicao de branch, intrinsicos SIMD, ferramentas de profiling (perf, valgrind, sanitizers), benchmarking, otimizacoes do compilador, otimizacao em tempo de link, otimizacao guiada por perfil

    Objetivos

    • Realizar profiling e otimizar programas C++ sistematicamente
    • Aplicar otimizacoes cache-friendly e SIMD

    Conceitos-chave

    • estruturas de dados cache-friendly
    • dicas de predicao de branch
    • intrinsicos SIMD
    • profiling (perf, valgrind)
    • sanitizers (ASan, TSan, UBSan)
    • otimizacoes do compilador (-O2, -O3)
    • otimizacao em tempo de link (LTO)
    • otimizacao guiada por perfil (PGO)
  • Sistemas de Build & Ferramentas

    CMake, modelo de compilacao (preprocessamento, compilacao, linkagem), arquivos de cabecalho e include guards, bibliotecas estaticas vs dinamicas, gerenciadores de pacotes (Conan, vcpkg), compilacao cruzada, sanitizers

    Objetivos

    • Configurar builds com CMake efetivamente
    • Compreender o modelo de compilacao e linkagem do C++

    Conceitos-chave

    • CMake (CMakeLists.txt, targets, propriedades)
    • modelo de compilacao (preprocessamento, compilacao, linkagem)
    • header guards e #pragma once
    • bibliotecas estaticas vs dinamicas (.a/.so/.dll)
    • gerenciadores de pacotes Conan / vcpkg
    • compilacao cruzada
    • flags de compilacao e warnings
    • compatibilidade ABI

Níveis: Júnior, Pleno, Sênior e Especialista

Explique com suas palavras

Corrigido por IA · sem cadastro · 1 pergunta

Sem alternativas para chutar: você escreve, a IA corrige com a rubrica do tópico e diz em que nível sua resposta está.

0 / 600

Já estuda C/C++?

A avaliação mede tópico por tópico, e o plano pula o que você já sabe.

Aberto para ler. A conta só é necessária para ser medido.

Perguntas frequentes

Por onde começar a estudar C/C++?

Comece por Fundamentos de C: Variaveis & Tipos, Fluxo de Controle e Funcoes. O mapa ordena os tópicos pelo que depende de quê, então cada um prepara o seguinte.

Quanto tempo leva uma avaliação completa de C/C++?

Uma avaliação completa desta trilha leva cerca de 45 minutos. O tempo de estudo depende de onde você começa; o diagnóstico mostra quais tópicos você pode pular.

Preciso de conta para usar esta página?

Não. O mapa, os objetivos e os conceitos-chave são abertos. A conta só é necessária para ser medido, ver seu gap por tópico e receber um plano.