C++ em uma frase
C++ é uma linguagem de programação de tipagem estática e compilada que transforma o seu código-fonte diretamente em código de máquina nativo. Essa única escolha de design - sem interpretador, sem máquina virtual entre o seu programa e a CPU - é a razão pela qual C++ é uma das linguagens mais rápidas que você pode escrever, e por que ela alimenta o software que simplesmente não pode ser lento.
Aqui está o obrigatório primeiro programa. Execute-o aqui mesmo:
Há mais estrutura aqui do que em uma linguagem de script, e isso é proposital - C++ dá a você controle preciso em troca de ser explícito. Vamos detalhar cada parte disso ao longo das próximas páginas.
Por que C++ é rápida
A maioria das linguagens de script executa o seu código por meio de um interpretador ou de uma máquina virtual que lê e executa instruções em tempo de execução. C++ pula tudo isso:
- Um compilador (como
g++ouclang++) lê o seu código-fonte.cppe o traduz em instruções de máquina para um processador e um sistema operacional específicos. - O resultado é um executável independente que a CPU roda diretamente - nada fica entre o seu código e o hardware.
Como não há nenhuma tradução acontecendo enquanto o programa roda, os programas em C++ iniciam instantaneamente e rodam na velocidade máxima do processador. Você também ganha controle refinado sobre memória e hardware que linguagens de mais alto nível escondem de você de propósito.
A contrapartida: esse código de máquina é construído para uma única plataforma. Um executável compilado no Windows não vai rodar em um Mac - você recompila o código-fonte para cada destino. (Compare isso com Java, que compila para bytecode portável que roda em qualquer JVM.)
Tipagem estática e multiparadigma
Duas propriedades moldam como o código C++ se parece e se comporta.
Tipagem estática significa que toda variável tem um tipo conhecido em tempo de compilação, e o compilador verifica os seus tipos antes de o programa sequer rodar:
count é um int por toda a sua vida; tentar armazenar "hello" nele não compilaria. Isso captura toda uma classe de erros cedo, ao custo de digitar mais no começo.
Multiparadigma significa que C++ não força um único estilo sobre você. Você pode escrever código procedural simples, organizar a lógica em classes (orientado a objetos) ou usar templates para código genérico e reutilizável. A maioria dos programas reais mistura os três. Essa flexibilidade é poderosa, mas também significa que C++ tem uma grande área de superfície para aprender - vamos abordá-la um conceito de cada vez.
Para que serve C++
C++ aparece sempre que desempenho e controle são inegociáveis:
- Motores de jogos - Unreal Engine, o núcleo da Unity e a maior parte do código de jogos AAA.
- Software de sistemas - sistemas operacionais, drivers de dispositivos e navegadores como Chrome e Firefox.
- Serviços de alto desempenho - bancos de dados, sistemas de trading e infraestrutura de busca onde microssegundos contam.
- Embarcados e hardware - firmware para carros, drones, dispositivos médicos e IoT.
Se um software precisa ser rápido, caber em pouca memória ou conversar diretamente com o hardware, há uma boa chance de ele ser escrito em C++.
C++ não é C (mas começou ali)
C++ surgiu de C nos anos 1980 como "C com classes", e continua sendo, na maior parte, um superconjunto - muito código C válido compila como C++. Mas a linguagem cresceu enormemente desde então.
C++ adiciona programação orientada a objetos, templates para código genérico, referências, exceções e uma rica biblioteca padrão cheia de ferramentas prontas para uso. Este trecho usa uma delas, vector - um array redimensionável que gerencia a própria memória, algo que você teria que construir à mão em C:
O C++ moderno (os padrões C++11, C++17 e C++20) se apoia fortemente em ferramentas como essas para tornar a linguagem mais segura e expressiva do que suas raízes em C. Um erro comum de iniciante é escrever C++ no estilo de C - memória manual, arrays crus por toda parte - quando a biblioteca padrão já resolve o problema para você. Vamos favorecer o estilo moderno ao longo destes documentos.
Próximo: Instalando C++
Para escrever e rodar C++ na sua própria máquina você precisa de um compilador - normalmente g++ (parte do GCC), clang++ ou o conjunto de ferramentas MSVC no Windows. A próxima página orienta você na instalação de um e na confirmação de que ele funciona a partir do seu terminal.
Perguntas frequentes
Para que serve C++?
C++ alimenta software onde velocidade e controle importam: motores de jogos (Unreal, o núcleo da Unity), sistemas operacionais, navegadores (Chrome, Firefox), bancos de dados, sistemas de trading e dispositivos embarcados. Sua força está em rodar perto do hardware sem abrir mão de recursos de alto nível como classes, templates e a biblioteca padrão.
C++ é compilada ou interpretada?
C++ é compilada. Um compilador como g++ ou clang++ traduz o seu código-fonte diretamente para código de máquina nativo para uma CPU e um sistema operacional específicos, produzindo um executável independente. Não há interpretador nem máquina virtual entre o seu programa e o processador, e é por isso que C++ é tão rápida.
Qual é a diferença entre C e C++?
C++ começou como "C com classes" e é, na maior parte, um superconjunto de C, então a maioria do código C compila como C++. As grandes adições são a programação orientada a objetos (classes e herança), os templates, a biblioteca padrão (contêineres como vector e map), as referências, as exceções e muitos recursos de segurança e conveniência que C não tem.