Author(s): Scott Meyers
Edition: Terceira Edição
Publisher: Bookman
Year: 2011
Language: Portuguese
Pages: 304
AUTOR
AGRADECIMENTOS
PREFÁCIO
SUMÁRIO
INTRODUÇÃO
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
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
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
4. PROJETOS E DECLARAÇÕES
Item 18: Deixe as interfaces fáceis de usar corretamente e 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
5. IMPLEMENTAÇÕES
Item 26: Postergue a definição de variáveis tanto quanto possível
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
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
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
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
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