Referências¶
Onde procurar o que este curso não cobriu — ou cobriu e você quer ver explicado por outra voz. A lista é curta de propósito: são os lugares que valem o seu tempo, com uma frase dizendo para que cada um serve e em que momento do curso recorrer a ele.
Quase tudo aqui está em inglês
É a realidade da documentação de C++: o material sério e atualizado é, na esmagadora maioria, em inglês. As páginas de referência são muito mais fáceis de ler do que parecem — são tabelas, assinaturas de função e exemplos curtos. Comece por elas, não por textos longos. Os itens marcados com (pt-BR) têm versão em português.
Consulta rápida: "como era a assinatura disso?"¶
cppreference.com — a referência da biblioteca
padrão. É onde você confere o que std::sort recebe, o que map::find devolve,
quais construtores std::string tem. Use a partir da Unidade 2, e use da forma
certa: procure no Google por cppreference vector push_back em vez de navegar
pelo site, que é organizado como um manual, não como um tutorial. Cada página tem
um exemplo compilável no fim — comece pelo exemplo e volte à tabela depois.
A mensagem de erro do seu compilador, colada no buscador — parece conselho preguiçoso, mas é a técnica mais usada por quem programa C++ profissionalmente. Antes disso, porém, consulte o Apêndice de erros comuns, que tem as mensagens que esta turma de fato encontra, já traduzidas para a causa.
Leitura guiada e gratuita¶
learncpp.com — o mais próximo de um livro-texto gratuito de C++ moderno, dividido em capítulos curtos, com exercícios. É a nossa recomendação número um para quem quer reler o curso com mais profundidade: os capítulos 12 a 15 tratam de funções e escopo, os 21 a 25 de classes, herança e polimorfismo. Cobre bem os assuntos dos nossos capítulos 9 a 11.
C++ Core Guidelines —
o guia de boas práticas mantido por Bjarne Stroustrup (criador da linguagem) e
Herb Sutter. Não é para ler de cabo a rabo: é para consultar quando você se
pergunta "qual é a forma recomendada de fazer isso?". A regra do zero do
capítulo 10 vem de lá (item C.20, "if you
can avoid defining default operations, do"), assim como a recomendação de
unique_ptr sobre ponteiro bruto.
ISO C++ FAQ — respostas curtas para as perguntas de "por que C++ é assim?". Útil quando alguma decisão da linguagem parece arbitrária.
Livros¶
Nenhum é necessário para passar no curso; são para quem quiser ir além.
Bjarne Stroustrup, A Tour of C++ (3ª ed.) — panorama denso e curto (~250
páginas) de C++20 inteiro, escrito para quem já programa. É o próximo livro
natural depois deste curso, e não antes: ele assume que você não precisa que
expliquem o que é um for.
Bjarne Stroustrup, Programming: Principles and Practice Using C++ (3ª ed.) — o livro introdutório do mesmo autor, muito mais longo. Sobrepõe bastante do que fizemos aqui, então sirva-se dele como segunda explicação quando algum tópico não tiver entrado na primeira leitura.
Scott Meyers, Effective Modern C++ — 42 recomendações específicas sobre C++11/14, com a justificativa técnica de cada uma. É excelente e é cedo demais para agora: guarde para quando você já tiver escrito alguns milhares de linhas de C++ e começar a se perguntar por que o código compila mas está lento.
Ferramentas online que mostram o invisível¶
Compiler Explorer (godbolt.org) — você escreve C++ de
um lado e vê, do outro, o código de máquina que o compilador gerou, atualizado a
cada tecla. Serve para duas coisas neste curso: comparar o mesmo trecho compilado
em dois compiladores diferentes, e comprovar que abstração em C++ costuma custar
zero (o vector::operator[] gera as mesmas instruções que a indexação de um
array em C). Também é o jeito mais rápido de testar se um trecho compila em
várias versões da linguagem.
cppinsights.io — mostra o seu código depois de
o compilador ter expandido tudo o que ele gera automaticamente. É especialmente
esclarecedor para o capítulo 10: cole ali
uma classe sem destrutor e você verá, escrito, o construtor de cópia que o
compilador criou por você — o mesmo que causa a cópia rasa e o double free. Cole
um laço for (auto x : v) e veja no que ele se transforma (capítulo 4).
Vídeo¶
Playlist do curso
(pt-BR) — as aulas gravadas, linkadas no topo de cada capítulo. Lembre da
ressalva registrada na Unidade 5: a playlist não
tem vídeo de destrutor/RAII nem de polimorfismo (virtual), que são só texto
por enquanto.
CppCon, no YouTube — as palestras da maior
conferência de C++ do mundo, de graça. O nível médio é alto, mas há palestras
introdutórias excelentes; procure pelas que têm "Back to Basics" no título, que
são feitas exatamente para quem está no seu ponto do aprendizado (existem "Back
to Basics" sobre RAII, sobre const, sobre ponteiros inteligentes).
Para continuar¶
Se a pergunta não é "onde consulto isso?" e sim "o que estudo agora?", a resposta está na página ao lado: Próximos passos em C++.