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:

  1. A ideia primeiro. Antes do código, você entende o problema que ele resolve, com uma comparação do dia a dia.
  2. 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.
  3. 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.
  4. 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.
  5. Várias formas de fazer. Quase sempre há mais de um caminho, e uma tabela "qual usar" mostra quando escolher cada um.
  6. Quando dá errado. O código com erro, a mensagem real do compilador (ou do programa), o que ela quer dizer e como consertar.
  7. 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"). O std:: quer dizer "da biblioteca padrão" (standard): tudo o que vem pronto com o C++ mora numa "gaveta" chamada std, 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 \n no 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 e std::vector
Começar ❯

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
Começar ❯

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
Começar ❯

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
Ver projetos ❯

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
Consultar ❯
A regra de ouro

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

ElementoO que significa
Caixa com o nome ola.cpp no cantoO 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ósitoCó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 linhaContinuação do comando da linha de cima (por exemplo, o texto de um arquivo sendo criado no terminal).
Linhas sem promptA resposta do computador: a saída do programa ou a mensagem do compilador.
← etiquetaUma explicação do guia sobre aquela linha. Não aparece no terminal real.
C++20O 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++).
ilustrativoUma 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.
Versão de referência: C++23, com o g++ 15 e o Clang

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.