C++ Introdução

O C++ (lê-se "cê mais mais") é uma linguagem de programação feita para criar programas rápidos, que aproveitam bem o computador: jogos, navegadores, bancos de dados, o software de um carro. Ele é uma linguagem compilada: antes de rodar, o seu texto é traduzido para a língua do processador. Nesta aula você vai entender o que isso quer dizer, onde o C++ é usado, de onde ele veio e como ele se compara com o C, o Java e o Python.

Você vai aprender
  • O que é programar e o que é uma linguagem de programação.
  • O que é o C++ e o que o torna diferente: velocidade e controle.
  • Onde o C++ é usado, com exemplos que você conhece: jogos, navegadores, bancos de dados, carros, compiladores.
  • A história: Bjarne Stroustrup, o "C com Classes" de 1979 e o C++ de 1985.
  • Como o C++ se compara com o C, o Java e o Python.
  • O que você vai conseguir fazer ao terminar o guia.

Primeiro: o que é programar?

Um computador não "entende" nada sozinho. Ele só sabe seguir instruções, uma de cada vez, muito rápido. Programar é escrever essas instruções. Uma linguagem de programação é o idioma combinado entre você e o computador: um conjunto de palavras e símbolos com regras rígidas (onde vai o ponto e vírgula, onde abrem e fecham as chaves).

Pense numa receita de bolo. Ela tem uma lista de passos, em ordem: "pré-aqueça o forno", "misture os ovos com o açúcar", "se a massa estiver grossa, acrescente leite". Um programa é igual: uma lista de passos, alguns com decisões ("se…") e repetições ("bata até ficar homogêneo"). A diferença é que o computador segue a receita ao pé da letra. Se você escrever cuot em vez de cout, ele não adivinha o que você quis dizer: ele para e reclama. Essas reclamações são as mensagens de erro, e o guia vai ensinar você a lê-las.

A língua do processador

O processador (a CPU, o "cérebro" do computador) não entende português, nem inglês, nem C++. Ele só entende código de máquina: números que querem dizer coisas como "some estes dois valores" ou "guarde isto na memória". Escrever programas diretamente em números seria um pesadelo. Por isso existem as linguagens de programação, que são feitas para pessoas lerem e escreverem.

Alguém precisa traduzir o texto da linguagem para os números do processador. Existem dois jeitos de fazer isso:

JeitoComo funcionaComparaçãoExemplos
CompilarUm programa chamado compilador traduz o texto inteiro antes, uma vez só, e gera um arquivo executável. Depois, o executável roda sozinho, quantas vezes você quiser.Traduzir um livro inteiro e imprimir a tradução. Quem lê a versão traduzida não precisa do tradutor.C, C++, Rust, Go
InterpretarUm programa chamado interpretador lê o texto e vai executando linha por linha, toda vez que o programa roda.Um intérprete numa palestra, traduzindo frase por frase enquanto a pessoa fala. Sem o intérprete na sala, ninguém entende.Python, JavaScript, PHP

O C++ é compilado. Essa é a principal razão de ele ser tão rápido: quando o programa roda, a tradução já foi feita, e o processador só executa. A aula Como o C++ Vira Programa mostra a tradução acontecendo, etapa por etapa.


O que é o C++

O C++ é uma linguagem de uso geral: serve para quase qualquer tipo de programa. Três características explicam por que ele é escolhido:

  • Rápido. O compilador gera código de máquina, e a linguagem não coloca nada "no meio do caminho" que você não pediu. A regra de ouro dos criadores é: você não paga pelo que não usa.
  • Controle. Você decide onde e quando cada dado fica na memória do computador. Isso permite programas muito econômicos, mas também traz responsabilidade (o guia ensina as ferramentas modernas que tornam isso seguro, como ponteiros inteligentes).
  • Abstração. Mesmo sendo rápido, o C++ permite escrever em "alto nível": textos (std::string), listas que crescem (std::vector), classes, ordenar uma lista com uma linha. Você escolhe o quanto quer descer aos detalhes.

Veja um programa C++ pequeno. Ele faz uma conta simples dez milhões de vezes (somar o resto da divisão de cada número por 7) e mostra o total:

#include <iostream>

int main() {
    long long total = 0;
    for (long long i = 0; i < 10000000; i++) {
        total += i % 7;
    }
    std::cout << total << "\n";
}

Não se preocupe em entender cada linha agora: long long é um tipo de número inteiro grande (aula Inteiros), o for repete um trecho (aula for) e o % calcula o resto da divisão (aula Operadores Aritméticos). A Ana escreveu o mesmo programa em Python, uma linguagem interpretada, e mediu o tempo dos dois com o comando time, que mostra quanto um programa demorou (a linha real é o tempo de relógio):

total = 0
for i in range(10000000):
    total += i % 7
print(total)
$ g++ -std=c++23 -Wall -Wextra conta.cpp -o conta
$ time ./conta
29999994

real	0m0,043s                       « C++: 43 milésimos de segundo
user	0m0,040s
sys	0m0,003s
$ time python3 conta.py
29999994

real	0m1,774s                       « Python: quase 2 segundos
user	0m1,767s
sys	0m0,005s

Mesmo resultado, e o C++ foi uns 40 vezes mais rápido nesta conta, na máquina da Ana. Os números exatos mudam de computador para computador e de programa para programa, e o Python tem truques (bibliotecas escritas em C e C++) para chegar perto em muitas tarefas. Mas a ordem de grandeza é essa: em contas pesadas, um programa compilado costuma ganhar com folga. É por isso que jogos, navegadores e bancos de dados são feitos em C++.

Rode o programa aqui. A caixa compila o código com um compilador C++ real e mostra o resultado:

Experimente: rode como está e confira o 29999994. Depois troque 10000000 por 10 e rode de novo: o total vira 24 (0+1+2+3+4+5+6+0+1+2). Conferiu de cabeça?

#include <iostream>

int main() {
    long long total = 0;
    for (long long i = 0; i < 10000000; i++) {
        total += i % 7;
    }
    std::cout << total << "\n";
}

Onde o C++ é usado

O C++ está em lugares que você usa todo dia, quase sempre escondido:

ÁreaExemplos concretosPor que C++
JogosA Unreal Engine (motor de jogos da Epic Games, usado em Fortnite e em centenas de outros jogos) é escrita em C++, e a lógica dos jogos feitos com ela também é programada em C++. Os grandes motores de jogos em geral têm o "coração" em C++.Um jogo precisa desenhar a tela 60 vezes por segundo ou mais: cada milésimo conta.
NavegadoresO Chromium (base do Chrome, do Edge, do Opera e do Brave) é escrito principalmente em C++, assim como o V8, o motor que roda o JavaScript dos sites (e também o Node.js). O Firefox é feito de C++ com Rust.Abrir páginas pesadas rápido e usar pouca memória com dezenas de abas abertas.
Sistemas e aplicativosPartes do Windows e do macOS, o Photoshop, o LibreOffice, o Microsoft Office, o Blender (3D, feito em C e C++).Programas grandes, que precisam responder na hora.
Bancos de dadosMySQL (C e C++), MongoDB, ClickHouse.Procurar entre milhões de registros em milésimos de segundo.
EmbarcadosOs programas do Arduino (os "sketches") são C++. Centrais de carros, máquinas industriais, equipamentos médicos e aviões: o software do caça F-35 foi escrito em C++.Aparelhos com pouca memória e pouca bateria, que não podem travar.
Compiladores e ferramentasO Clang/LLVM e o próprio GCC (o g++ deste guia) são escritos em C++. Ou seja: o C++ é compilado por programas escritos em C++.Ferramentas que processam milhões de linhas de código.
Ciência, finanças e IAO núcleo do PyTorch e do TensorFlow (inteligência artificial) é C++; quem programa em Python chama esse C++ por baixo. Simulações científicas e sistemas de bolsa de valores também usam muito C++.Contas enormes, feitas muitas vezes.
E o Linux? E o Python?

Duas confusões comuns. O núcleo do Linux é escrito em C (e, mais recentemente, em parte em Rust), não em C++. E o interpretador mais usado do Python também é escrito em C. O C++ é "parente próximo" do C, e os dois convivem muito bem: um programa C++ consegue usar bibliotecas escritas em C sem esforço.


Um pouco de história

O C++ nasceu de um problema prático. Em 1979, o dinamarquês Bjarne Stroustrup trabalhava no Bell Labs, o laboratório de pesquisa da AT&T nos Estados Unidos, o mesmo lugar onde tinham sido criados o sistema Unix e a linguagem C. No doutorado, na Universidade de Cambridge, ele tinha usado a linguagem Simula, que organizava programas em "classes" (modelos de objetos, como "Conta bancária" ou "Aluno"). A Simula era ótima para organizar ideias, mas lenta demais. O C era rapidíssimo, mas não tinha classes. Stroustrup quis o melhor dos dois.

AnoO que aconteceu
1972Dennis Ritchie cria a linguagem C no Bell Labs, para escrever o sistema Unix.
1979Bjarne Stroustrup começa o "C com Classes" (C with Classes): o C, acrescido de classes. O código era traduzido para C e depois compilado por um compilador de C comum.
1983A linguagem ganha o nome C++, sugerido por Rick Mascitti, colega de Stroustrup.
1985Primeira versão comercial (o compilador Cfront, em outubro) e o livro The C++ Programming Language, de Stroustrup, que serviu de "manual oficial" por anos.
1998Primeiro padrão oficial da ISO (a organização internacional de normas): o C++98. A partir daí, a linguagem passa a ser decidida por um comitê internacional, e não mais por uma pessoa ou empresa.
2011C++11: a grande virada, tão grande que Stroustrup disse que parecia "uma linguagem nova". É o começo do chamado C++ moderno.
2023C++23, a versão que este guia ensina. Desde 2011 sai uma versão nova a cada três anos (aula Versões do C++).

Por que "++"?

O nome é uma piada de programador. Em C (e em C++), ++ é o operador que soma 1 a uma variável: x++ quer dizer "x mais um" (aula ++ e --). Então C++ quer dizer "o C, um passo à frente". E por que não "D"? Porque o C++ não substituiu o C: ele o estendeu. Quase todo programa em C também é um programa C++ válido.

Rode a linha do tempo abaixo. Cada linha com std::cout escreve um ano e um acontecimento:

Missão: a linha do tempo parou em 2011. Copie a última linha com std::cout, cole logo abaixo dela e mude para 2023: C++23. Rode e confira que a lista ganhou uma linha.

#include <iostream>

int main() {
    std::cout << "1979: C com Classes\n";
    std::cout << "1985: C++ chega às lojas\n";
    std::cout << "1998: C++98, o primeiro padrão ISO\n";
    std::cout << "2011: C++11, o C++ moderno\n";
}
#include <iostream>

int main() {
    std::cout << "1979: C com Classes\n";
    std::cout << "1985: C++ chega às lojas\n";
    std::cout << "1998: C++98, o primeiro padrão ISO\n";
    std::cout << "2011: C++11, o C++ moderno\n";
    std::cout << "2023: C++23\n";
}

C++, C, Java e Python

Quem começa a estudar programação quase sempre ouve falar dessas quatro linguagens. Cada uma brilha num lugar diferente:

C++CJavaPython
Como rodaCompilado para código de máquinaCompilado para código de máquinaCompilado para um código intermediário (bytecode), que a máquina virtual Java (JVM) executaInterpretado
VelocidadeMuito altaMuito altaAlta (a JVM otimiza enquanto roda)Baixa em contas puras; alta quando usa bibliotecas escritas em C/C++
MemóriaVocê controla; ferramentas modernas (ponteiros inteligentes, RAII) liberam sozinhasVocê controla tudo, à mão (malloc e free)Automática: um "coletor de lixo" libera o que não é mais usadoAutomática
Classes e objetosSim, e também templates, funções soltas e maisNãoSim, tudo fica dentro de classesSim
Curva de aprendizadoLonga: a linguagem é grande e tem detalhes de memóriaMédia: linguagem pequena, mas com armadilhasMédiaSuave: a mais fácil para começar
Olá, mundostd::cout << "Olá";printf("Olá");System.out.println("Olá");print("Olá")
Para rodar no seu PCCompilador (g++, Clang ou o da Microsoft)Compilador (gcc, Clang)JDK (o kit do Java)O interpretador Python
Famoso porJogos, navegadores, bancos de dados, sistemas que precisam de velocidadeSistemas operacionais (Linux), firmwareSistemas de empresas e bancos, AndroidCiência de dados, automação, inteligência artificial

Resumindo: o C é o "avô" pequeno e direto; o C++ pegou o C e acrescentou ferramentas para organizar programas grandes, sem perder a velocidade; o Java nasceu em 1995 inspirado no C++, mas trocou parte do controle por segurança automática; o Python troca velocidade por facilidade. Nenhuma é "a melhor": cada uma resolve um tipo de problema.

C++ é difícil demais para começar?

O C++ é grande, mas você não precisa saber tudo para escrever programas úteis. O guia apresenta uma coisa por vez, e ensina primeiro as partes modernas e seguras (std::string, std::vector, std::print), deixando ponteiros e memória para o Nível 2, quando você já estiver à vontade. Uma vantagem: quem aprende C++ aprende como o computador funciona, e depois qualquer outra linguagem fica mais fácil.


Quando dá errado

Ainda não escrevemos programas, mas há confusões muito comuns em quem está começando com C++:

"Achei um curso de C# (ou de C) pensando que era C++"

O que aconteceu: os nomes são parecidos, mas são linguagens diferentes. O C# (lê-se "cê sharp") é uma linguagem da Microsoft, de 2000, mais parecida com o Java do que com o C++. O C é a linguagem de 1972 da qual o C++ nasceu. "Visual C++" não é outra linguagem: é o nome do compilador C++ da Microsoft.

Como conferir: um programa C++ costuma ter #include <iostream> e std::cout; um programa C, #include <stdio.h> e printf; um programa C#, Console.WriteLine.

Salvei o código C++ com a extensão .c e o compilador de C reclamou

A Ana copiou o ola.cpp para ola.c e chamou o gcc, o compilador de C:

$ gcc ola.c -o ola
ola.c:1:10: fatal error: iostream: Arquivo ou diretório inexistente
    1 | #include <iostream>
      |          ^~~~~~~~~~
compilation terminated.

O que aconteceu: com um arquivo .c, o gcc trata o código como C, e o C não tem o <iostream> (ele é do C++). A mensagem diz "erro fatal: iostream: arquivo ou diretório inexistente" (essa parte veio traduzida, porque é o sistema que a escreve). "Fatal" quer dizer que o compilador desistiu ali mesmo.

Como resolver: salve o código C++ com a extensão .cpp (também existem .cc e .cxx, menos comuns) e compile com g++, o compilador de C++. A aula Como o C++ Vira Programa conta mais sobre o gcc e o g++.

"Dei dois cliques no arquivo .cpp e só abriu um texto"

O que aconteceu: nada de errado. O arquivo .cpp é só o texto do programa, o "código-fonte". Ele não roda sozinho: primeiro precisa ser compilado. Quem roda é o executável gerado pelo compilador.

Como resolver: use as caixas Experimente do guia ou instale um compilador (aulas Instalar no Linux e Instalar no Windows e macOS).


O que você vai conseguir fazer

Ao terminar cada nível do guia, você vai saber:

Ao terminarVocê consegue
Nível 1 · InicianteEscrever, compilar e rodar programas que guardam valores, fazem contas, leem o que o usuário digita, trabalham com textos, tomam decisões, repetem tarefas e organizam listas com std::vector. Ler as mensagens de erro e os avisos do compilador.
Nível 2 · IntermediárioDividir o programa em funções, entender a memória (referências, ponteiros, ponteiros inteligentes), criar seus próprios tipos com struct e enum class, ler e gravar arquivos, tratar erros com exceções, achar falhas com o GDB e os sanitizers, e organizar projetos com vários arquivos, Make e CMake.
Nível 3 · AvançadoProgramar com classes e objetos, herança e polimorfismo, escrever templates, usar a biblioteca padrão a fundo (map, algoritmos, ranges), entender movimento, constexpr, threads e módulos, e escrever testes automáticos.
ProjetosJuntar tudo: calculadora, jogo de adivinhação, agenda de contatos, contas bancárias, controle de estoque e um analisador de texto.

Depois disso, você vai conseguir ler código C++ de projetos reais, estudar um motor de jogos como a Unreal, programar um Arduino ou aprender outra linguagem com facilidade. Para fechar, rode o seu primeiro programa da aula:

Missão: o programa já escreve a primeira linha. Complete a segunda: troque ??? pelo seu nome e coloque um ! depois de C++, para a saída ficar Meu nome é Ana e eu vou aprender C++! (com o seu nome no lugar de Ana).

#include <iostream>

int main() {
    std::cout << "Olá! Este é o meu primeiro programa em C++.\n";
    std::cout << "Meu nome é ??? e eu vou aprender C++\n";
}
#include <iostream>

int main() {
    std::cout << "Olá! Este é o meu primeiro programa em C++.\n";
    std::cout << "Meu nome é Ana e eu vou aprender C++!\n";
}

O \n no fim de cada texto é a quebra de linha: ele faz a segunda frase começar numa linha nova. Tente apagar o primeiro \n e rodar: as duas frases ficam grudadas. A aula Novas Linhas conta tudo sobre ele.


Exercícios

1. O que significa dizer que o C++ é uma linguagem compilada?

2. Quem criou o C++, e com que nome ele começou?

3. Qual destes programas é escrito principalmente em C++?

4. O que quer dizer o ++ no nome C++?

5. Em que o C++ se diferencia do Java no cuidado com a memória?

6. A extensão certa

Para o g++ tratar o arquivo como código C++, qual é a extensão mais comum do nome do arquivo? Complete:

ola

Resumo

  • Programar é escrever instruções para o computador; o processador só entende código de máquina, e alguém precisa traduzir.
  • O C++ é compilado: o compilador traduz tudo antes, e o executável roda sozinho, rápido.
  • Ele combina velocidade, controle da memória e abstração (strings, listas, classes).
  • Está em jogos (Unreal), navegadores (Chromium, Firefox), bancos de dados (MySQL, MongoDB), embarcados (Arduino, carros, aviões) e compiladores (Clang, GCC).
  • Criado por Bjarne Stroustrup: "C com Classes" em 1979, nome C++ em 1983, lançamento em 1985, padrão ISO desde 1998; o guia ensina o C++23.
  • Comparado com C, Java e Python: tão rápido quanto o C, com mais ferramentas; mais controle que Java e Python, com uma curva de aprendizado mais longa.
  • Próximo passo: ver o código virar programa, etapa por etapa, em Como o C++ Vira Programa.