Tutorial C++
Aprenda C++ do zero, como numa escola: cada linha de código é explicada parte por parte, você vê exatamente o que aparece na tela e pratica num editor aqui mesmo no navegador. E o editor não é uma imitação: ele compila e roda C++ de verdade, com um compilador real (o Clang) funcionando dentro da página. O guia ensina o C++23, a versão atual da linguagem, e todas as saídas e mensagens de erro foram conferidas num computador real, com o g++ 15. Vale para Linux, Windows e macOS.
Comece pelo Nível 1 ❯Experimente agora
A caixa abaixo é o editor Experimente do guia. Ela tem um programa C++ completo, de cinco linhas, pronto para rodar. Clique em Rodar. Na primeira vez, o navegador baixa o compilador (pode levar alguns segundos, dependendo da sua internet); depois disso, cada execução é bem mais rápida. Nada do que você fizer aqui mexe no seu computador.
Missão: clique em Rodar e veja o Olá, mundo! aparecer. Depois troque o texto entre as aspas por Estou aprendendo C++! e rode de novo. Cuidado para não apagar as aspas ", o \n nem o ; do fim da linha.
#include <iostream>
int main() {
std::cout << "Olá, mundo!\n";
}
#include <iostream>
int main() {
std::cout << "Estou aprendendo C++!\n";
}
O que aconteceu: quando você clicou em Rodar, duas coisas aconteceram, uma depois da outra. Primeiro, o compilador leu o seu texto e o transformou num programa (como um tradutor que passa uma receita do português para a língua da cozinheira). Depois, o programa rodou e escreveu a frase. Esse "traduzir antes de rodar" é a marca do C++, e a aula Como o C++ Vira Programa mostra cada etapa.
Das cinco linhas, a que faz alguma coisa é a do meio: std::cout (lê-se "ésse-tê-dê cê-áut", de character output, "saída de caracteres") é a tela, e << empurra o texto para ela. As outras linhas são a moldura que todo programa C++ precisa ter. A aula Olá, Mundo explica cada pedaço com calma.
Se você apagou o ; sem querer, viu uma mensagem em inglês com a palavra error e o programa nem chegou a rodar. Não se assuste: é o compilador dizendo em que linha e em que coluna ele se perdeu. A aula Lendo Erros do Compilador ensina a ler essas mensagens, que no começo parecem grego e depois viram as suas melhores amigas.
Um programa que faz conta
Computadores são ótimos em contas. A caixa abaixo guarda duas notas da Ana em duas variáveis (caixinhas com nome, aula Variáveis) e mostra a média. Rode e veja o resultado.
Missão: rode e veja a média 8. A professora corrigiu as provas de novo: a primeira valia 8 e a segunda 10. Troque os dois números, rode outra vez, e a média deve virar 9.
#include <iostream>
int main() {
int prova1 = 7;
int prova2 = 9;
std::cout << "Média da Ana: " << (prova1 + prova2) / 2 << "\n";
}
#include <iostream>
int main() {
int prova1 = 8;
int prova2 = 10;
std::cout << "Média da Ana: " << (prova1 + prova2) / 2 << "\n";
}
Repare que o texto entre aspas aparece igualzinho, e a conta (prova1 + prova2) / 2 aparece já calculada. Curiosidade que vai ser útil depois: se as notas fossem 7 e 8, a média apareceria 7, e não 7.5. Em C++, a divisão entre dois números inteiros joga fora a parte quebrada. A aula Operadores Aritméticos explica por quê e como pedir o 7.5.
O que é este guia
O C++ é a linguagem por trás de muita coisa que você usa todo dia sem perceber: o navegador em que você está lendo isto (Chrome, Firefox e Edge são escritos em boa parte em C++), os jogos feitos com a Unreal Engine, o Photoshop, bancos de dados como o MySQL, partes do Windows e do macOS, e o software de carros, aviões e máquinas de cartão. Ele é escolhido quando um programa precisa ser rápido e usar pouca memória. A aula O que é C++ mostra onde ele está e de onde ele veio.
Quem aprende C++ consegue:
- escrever programas que fazem contas, tomam decisões, repetem tarefas e organizam listas de dados;
- entender o que acontece "por baixo" de um programa: memória, endereços, como o texto que você escreve vira instruções da máquina;
- criar ferramentas de terminal, jogos simples, simulações e programas que leem e gravam arquivos;
- ler e modificar código de projetos grandes em C++ e aprender com facilidade C, Java, C#, Rust e outras linguagens parecidas.
O guia é para quem nunca programou. Ele começa do zero absoluto (o que é um programa? o que é compilar?) e vai até o C++ moderno: classes, templates, a biblioteca padrão (STL), ponteiros inteligentes, ranges, std::print e std::expected do C++23. O C++ tem fama de difícil. Parte da fama vem de um jeito antigo de ensinar, cheio de armadilhas; este guia ensina o jeito moderno e seguro desde a primeira aula, e mostra o antigo só para você reconhecê-lo quando encontrar.
Como as aulas funcionam
Nenhum código aparece "seco". Toda aula segue o mesmo caminho:
- A ideia primeiro. Antes do código, você entende o problema que ele resolve, com uma comparação do dia a dia.
- Anatomia. Cada pedaço de uma linha nova é separado e explicado: o que é palavra do C++, o que é nome escolhido por você, para que serve cada símbolo.
- A saída real. Você vê exatamente o que aparece na tela, com etiquetas laranja apontando o que importa. Toda saída foi produzida por um compilador de verdade.
- Experimente. Pelo menos duas caixas por aula para você mudar o código e rodar, muitas com uma missão e um botão para ver a solução. As caixas compilam o C++ de verdade, então os erros que você vir são erros reais.
- Várias formas de fazer. Quase sempre há mais de um caminho, e uma tabela "qual usar" mostra quando escolher cada um.
- Quando dá errado. O código com erro, a mensagem real do compilador (ou do programa), o que ela quer dizer e como consertar.
- Exercícios e resumo. Perguntas com correção na hora e uma lista curta do que levar da aula.
Exemplo: a anatomia de uma linha
Esta é a linha que você mudou lá em cima. Veja como as aulas desmontam uma linha de código:
std::cout << "Olá, mundo!\n";
- std::cout
- A saída do programa, normalmente a tela (
cout= character output, "saída de caracteres"). Ostd::quer dizer "da biblioteca padrão" (standard): tudo o que vem pronto com o C++ mora numa "gaveta" chamadastd, e os dois-pontos duplos::querem dizer "de dentro de". A aula Namespaces explica as gavetas. - <<
- "Mande para". Pense numa seta: o texto à direita vai para o
coutà esquerda. - "Olá, mundo!\n"
- O texto a mostrar. As aspas marcam onde ele começa e termina e não aparecem na tela. O
\nno fim é uma quebra de linha (aula Novas Linhas). - ;
- O ponto e vírgula termina a instrução, como o ponto final de uma frase. Esquecê-lo é o erro número um de quem começa.
Exemplo: o terminal
Além do editor, as aulas mostram o terminal da máquina fictícia do guia: um computador chamado notebook, da usuária ana, com Linux em português e o g++ 15 instalado. Ali, a Ana guarda o código num arquivo, pede ao g++ (o compilador) para transformá-lo em programa e depois roda o programa:
$ cat ola.cpp « mostra o conteúdo do arquivo
#include <iostream>
int main() {
std::cout << "Olá, mundo!\n";
}
$ g++ -std=c++23 -Wall -Wextra ola.cpp -o ola « compila: ola.cpp vira o programa ola
$ ./ola « roda o programa
Olá, mundo!
$ echo $?
0 « código de saída 0: terminou sem erro
Repare que o g++ não escreveu nada: no mundo do terminal, silêncio quer dizer sucesso. Se houvesse um erro, ele apareceria ali. E quando falta o ;, é assim que o g++ reclama:
$ g++ -std=c++23 -Wall -Wextra erro.cpp -o erro
erro.cpp: In function ‘int main()’:
erro.cpp:4:33: error: expected ‘;’ before ‘}’ token « linha 4, coluna 33: faltou um ;
4 | std::cout << "Olá, mundo!\n"
| ^
| ; « o g++ até mostra onde ele vai
5 | }
| ~
$ echo $?
1 « 1: a compilação falhou, nenhum programa foi criado
As mensagens do compilador saem em inglês, mesmo com o computador em português. O guia traduz e explica cada uma. A aula Compilar com g++ explica o que significa cada pedaço do comando g++ -std=c++23 -Wall -Wextra ola.cpp -o ola, e a aula O Editor do Guia ensina a usar as caixas Experimente.
Escolha sua trilha
Nível 1 · Iniciante
Para quem nunca programou.
- O que é C++, como o código vira programa, instalar e escolher um editor
- O primeiro programa, compilar com g++, ler erros e avisos
- Variáveis, tipos,
cin, operadores e textos (std::string) if,switch, laços, arrays estd::vector
Nível 2 · Intermediário
Funções, memória e organização.
- Funções, parâmetros, referências, lambdas e recursão
- Como a memória funciona: ponteiros e ponteiros inteligentes
struct,enum class, arquivos e exceções- Depurar com GDB e sanitizers, vários arquivos, Make e CMake
Nível 3 · Avançado
Objetos, templates e a STL.
- Classes, construtores, RAII, herança e polimorfismo
- Templates e concepts
- A biblioteca padrão:
map, algoritmos, ranges,optional - Movimento,
constexpr, threads, módulos e o C++26
Projetos
Programas completos, construídos passo a passo.
- Calculadora e jogo de adivinhação
- Agenda de contatos com arquivo
- Contas bancárias com classes
- Controle de estoque e analisador de texto
Referência
Consulta rápida para quando você já sabe o que procura.
- Tipos e seus limites
std::string, containers e algoritmos- Mensagens de erro do compilador
- Glossário e quiz
Ler não basta: digite cada exemplo. Use as caixas Experimente das aulas e, quando tiver o compilador instalado, repita no terminal do seu computador. Para instalar, veja Instalar no Linux ou Instalar no Windows e macOS. Se ainda não quiser instalar nada, tudo bem: quase todo o Nível 1 pode ser feito só no navegador.
Como ler este guia
| Elemento | O que significa |
|---|---|
Caixa com o nome ola.cpp no canto | O conteúdo de um arquivo de código. O nome no canto é o nome do arquivo. Quando aparece trecho, é só um pedaço de programa, não um arquivo inteiro. |
ola.cpp · erro de propósito | Código com erro, mostrado de propósito para você ver a mensagem do compilador. Não copie como exemplo a seguir. |
ana@notebook:~/cpp$ | O prompt do terminal: usuária ana, na máquina notebook, na pasta ~/cpp (a pasta cpp dentro da pasta pessoal). O que vem depois é o comando digitado. |
> no começo da linha | Continuação do comando da linha de cima (por exemplo, o texto de um arquivo sendo criado no terminal). |
| Linhas sem prompt | A resposta do computador: a saída do programa ou a mensagem do compilador. |
| ← etiqueta | Uma explicação do guia sobre aquela linha. Não aparece no terminal real. |
| C++20 | O recurso só existe a partir dessa versão do C++. A aula diz a alternativa para versões mais antigas (veja Versões do C++). |
| ilustrativo | Uma tela que não pôde ser produzida na máquina do guia (por exemplo, a instalação no Windows). Ela segue os passos oficiais, mas os detalhes podem variar. |
As saídas do terminal foram conferidas com o g++ 15.2 e o clang++ 21.1, num Linux (Ubuntu 26.04) em português do Brasil. O editor do navegador usa o Clang 22, compilado para WebAssembly (o formato de programa que os navegadores executam), com a biblioteca padrão do projeto LLVM (a libc++). Os compiladores seguem o mesmo padrão da linguagem, então o resultado dos programas corretos é o mesmo; só as mensagens de erro usam palavras um pouco diferentes (a aula O Editor do Guia compara as duas). Quase tudo do Nível 1 funciona em qualquer compilador dos últimos dez anos; quando um recurso é novo, a aula avisa com o selo de versão.