Sinopse
Com uma abordagem prática, C++ Eficaz descreve os princípios mais usados – e os quase sempre evitados – pelos experts para produzir código claro, correto e eficaz. Organizado em 55 regras específicas, que examinam métodos para melhor escrever C++ e apresentam inúmeros exemplos concretos, este é um guia valioso para todos os que desejam usar C++ de maneira segura e eficiente, ou que estejam fazendo a transição de outra linguagem orientada a objeto.
Sumário
Introdução
-Capítulo 1 Acostumando-se com a Linguagem C++
Item 1: Pense em C++ como um conjunto de linguagens
Item 2: Prefira constantes, enumerações e internalizações a definições
Item 3: Use const sempre que possível
Item 4: Certifique-se de que os objetos sejam inicializados antes do uso
-Capítulo 2 Construtores, destrutores e operadores de atribuição
Item 5: Saiba quais funções C++ escreve e chama silenciosamente
Item 6: Desabilite explicitamente o uso de funções geradas pelo compilador que você não queira
Item 7: Declare os construtores como virtuais em classes-base polimórficas
Item 8: Impeça que as exceções deixem destrutores
Item 9: Nunca chame funções virtuais durante a construção ou a destruição
Item 10: Faça com que os operadores de atribuição retornem uma referência para *this
Item 11: Trate as autoatribuições em operator=
Item 12: Copie todas as partes de um objeto
-Capítulo 3 Gerenciamento de recursos
Item 13: Use objetos para gerenciar recursos
Item 14: Pense cuidadosamente no comportamento de cópia em classes de gerenciamento de
recursos
Item 15: Forneça acesso a recursos brutos em classes de gerenciamento de recursos
Item 16: Use a mesma forma nos usos correspondentes de new e delete
Item 17: Armazene objetos criados com new em ponteiros espertos em sentenças autocontidas
-Capítulo 4 Projetos e declarações
Item 18: Deixe as interfaces fáceis de usar corretamente difíceis de usar incorretamente
Item 19: Trate o projeto de classe como projeto de tipo
Item 20: Prefira a passagem por referência para constante em vez da passagem por valor
Item 21: Não tente retornar uma referência quando você deve retornar um objeto
Item 22: Declare os membros de dados como privados
Item 23: Prefira funções não membro e não amigas a funções membro
Item 24: Declare funções não membro quando as conversões de tipo tiverem de ser aplicadas a
todos os parâmetros
Item 25: Considere o suporte para um swap que não lance exceções
-Capítulo 5 Implementações
Item 26: Postergue a definição de variáveis tanto quanto
Item 27: Minimize as conversões explícitas
Item 28: Evite retornar “manipuladores” para objetos internos
Item 29: Busque a criação de código seguro em relação a exceções
Item 30: Entenda as vantagens e desvantagens da internalização
Item 31: Minimize as dependências de compilação entre os arquivos
-Capítulo 6 Herança e projeto orientado a objetos
Item 32: Certifique-se de que a herança pública modele um relacionamento “é um(a)”
Item 33: Evite ocultar nomes herdados
Item 34: Diferencie a herança de interface da herança de implementação
Item 35: Considere alternativas ao uso de funções virtuais
Item 36: Nunca redefina uma função não virtual herdada
Item 37: Nunca redefina um valor padrão de parâmetro herdado de uma função
Item 38: Modele “tem um(a)” ou “é implementado(a) em termos de” com composição
Item 39: Use a herança privada com bom-senso
Item 40: Use a herança múltipla com bom-senso
-Capítulo 7 Templates e programação genérica
Item 41: Entenda as interfaces implícitas e o polimorfismo em tempo de compilação
Item 42: Entenda os dois significados de typename
Item 43: Saiba como acessar nomes em classes-base com templates
Item 44: Fatore código independente de parâmetros a partir de templates
Item 45: Use templates de funções membro para aceitar “todos os tipos compatíveis”
Item 46: Defina funções não membro dentro de templates quando desejar conversões de tipo
Item 47: Use classes de trait para informações sobre tipos
Item 48: Fique atento à metaprogramação por templates
-Capítulo 8 Personalizando new e delete
Item 49: Entenda o comportamento do tratador de new
Item 50: Entenda quando faz sentido substituir new e delete
Item 51: Adote a convenção quando estiver escrevendo new e delete
Item 52: Escreva delete de posicionamento se escrever new de posicionamento
-Capítulo 9 Miscelânea
Item 53: Preste atenção aos avisos do compilador
Item 54: Familiarize-se com a biblioteca padrão, incluindo TR1
Item 55: Familiarize-se com Boost
Índice