Exceptional C++
Exceptional C++
Resumo:
Introdução
O livro «Exceptional C++» (1999) de Herb Sutter não é um tutorial para iniciantes, mas uma coleção de 50 problemas de engenharia que farão você realmente refletir sobre como escreve código em C++. Em um mundo onde a confiabilidade do software é mais valorizada do que a velocidade de escrita, este livro continua sendo um padrão de compreensão profunda da linguagem. Sutter não apenas dá respostas — ele ensina a pensar em termos de situações excepcionais, gerenciamento de recursos e design de interfaces resistentes a erros.
Apesar de o livro ter sido lançado há mais de 20 anos, suas ideias (RAII, garantias de exceções, ponteiros inteligentes) tornaram-se a base do C++ moderno (C++11 e posteriores). Se você quer parar de temer exceções e começar a escrever código que não "quebra" no momento mais inoportuno — este livro é para você.
Sobre o que é o livro
«Exceptional C++» é estruturado no formato "pergunta-resposta" (problema — solução — análise). Cada capítulo é um aspecto diferente da programação confiável:
- Exceções e segurança: como escrever funções que não vazam recursos e deixam os objetos em um estado consistente mesmo quando ocorrem erros.
- RAII (Resource Acquisition Is Initialization): por que esta é a principal expressão idiomática do C++ e como aplicá-la para gerenciar memória, arquivos, mutexes.
- Templates e programação genérica: detalhes de instanciação, especialização parcial, SFINAE.
- Herança e polimorfismo: como projetar hierarquias de classes corretamente para não violar o princípio da substituição de Liskov.
- Gerenciamento de memória: operadores new/delete, placement new, sobrecarga de operadores.
- Design de interfaces: como criar uma API que seja difícil de usar incorretamente.
Para quem é este livro
O livro é direcionado a programadores C++ que já têm experiência (no mínimo 1-2 anos de desenvolvimento ativo). Será útil para:
- Desenvolvedores que querem escrever código de produção confiável.
- Aqueles que se preparam para entrevistas técnicas (os problemas do livro aparecem frequentemente no Google, Microsoft, Yandex).
- Professores e mentores que procuram exemplos para discutir em seminários.
- Todos que querem entender o "porquê" por trás das expressões idiomáticas padrão do C++, e não apenas o "como".
O que o leitor aprenderá
Após a leitura, você será capaz de:
- Formular e verificar garantias de exceções (básica, forte, nothrow) para suas funções.
- Usar corretamente std::auto_ptr (e seus equivalentes modernos unique_ptr/shared_ptr) para gerenciamento automático de recursos.
- Evitar armadilhas ao sobrecarregar operadores (especialmente operator= e operator[]).
- Projetar classes que funcionam corretamente em contêineres STL.
- Entender quando e como usar mutable, volatile, const_cast sem prejudicar a arquitetura.
- Escrever funções template que não explodem ao substituir tipos inadequados (SFINAE).
- Implementar a expressão idiomática copy-and-swap para atribuição segura.
Pontos fortes
- Profundidade e praticidade. Cada problema é uma questão real da experiência do autor. Você não encontrará exemplos abstratos como "gato-cachorro".
- Formato "pergunta-resposta". Pode ser lido a partir de qualquer capítulo. Ideal para "pausas rápidas" — 15 minutos por problema.
- Foco no "porquê". Sutter explica não apenas a solução correta, mas também a motivação: por que outras opções são ruins, quais compromissos existem.
- Estilo de escrita. Vivo, com uma pitada de humor e autoironia. O livro não se parece com um manual seco.
- Valor atemporal. Mesmo na era do C++20/23, os princípios de RAII e segurança contra exceções permanecem inalterados. O livro ensina os fundamentos que não se tornam obsoletos.