Índice Prefácio 6 Capítulo 1 Estrutura de Arquivo 11 1.1 Direitos autorais e declaração de versão 11 1.2 Estrutura do arquivo de cabeçalho 12 1.3 Estrutura do arquivo de definição 13 1.4 A função dos arquivos de cabeçalho 13 1.5 Estrutura de diretório 14 Capítulo 2 Layout do Programa 15 2.1 Linha em branco 15 2.2 Linha de código 16 2.3 Espaços dentro das linhas de código 17 2.4 Alinhamento 18 2.5 Divisão de linha longa 19 2.6 Posição dos modificadores 19 2.7 Nota 20 2.8 Layout da aula 21 Capítulo 3 Regras de Nomenclatura 22 3.1 Regras comuns 22 3.2 Regras simples de nomenclatura de aplicativos WINDOWS 23 3.3 Regras simples de nomenclatura de aplicativos UNIX 25 Capítulo 4 Expressões e Declarações Básicas 26 4.1 Precedência do operador 26 4.2 Expressões compostas 27 4.3 Declaração IF 27 4.4 Eficiência das instruções de loop 29 4.5 Variáveis de controle de loop da instrução FOR 30 4.6 Instrução SWITCH 30 4.7 Instrução GOTO 31 Capítulo 5 Constantes 33 5.1 Por que as constantes são necessárias 33 5.2 CONST versus #DEFINE 33 5.3 Regras para definição de constantes 33 5.4 Constantes nas classes 34 Capítulo 6 Design de Função 36 6.1 Regras para parâmetros 36 6.2 Regras para valores de retorno 37 6.3 Regras para implementação interna de funções 39 6.4 Outras sugestões 40 6.5 Usando asserções 41 6.6 Comparação de referências e indicadores 42 Capítulo 7 Gerenciamento de Memória 44 7.1 Método de alocação de memória 44 7.2 Erros comuns de memória e suas contramedidas 44 7.3 Comparação de ponteiros e arrays 45 7.4 Como os parâmetros do ponteiro transferem memória? 47 7.5 O que acontece com ponteiros com FREE e DELETE? 50 7.6 A memória dinâmica será liberada automaticamente? 50 7.7 Elimine “indicadores selvagens” 51 7.8 Por que precisamos de NEW/DELETE quando temos MALLOC/FREE? 52 7.9 O que devo fazer se a memória estiver esgotada? 53 7.10 Pontos-chave para usar MALLOC/FREE 54 7.11 Pontos-chave para usar NEW/DELETE 55 7.12 Algumas percepções 56 Capítulo 8 Recursos avançados de funções C++ 57 8.1 O conceito de sobrecarga de função 57 8.2 Sobrecarga, substituição e ocultação de funções-membro 60 8.3 Valores padrão dos parâmetros 63 8.4 Sobrecarga do operador 64 8.5 Inlining de função 65 8.6 Algumas percepções 68 Capítulo 9 Construtores, Destruidores e Funções de Atribuição de Classes 69 9.1 A Origem dos Construtores e Destruidores 69 9.2 Tabela de inicialização do construtor 70 9.3 Ordem de construção e destruição 72 9.4 Exemplo: Construtor e destruidor da classe STRING 72 9.5 Não subestime construtores de cópia e funções de atribuição 73 9.6 Exemplo: construtor de cópia e função de atribuição da classe STRING 73 9.7 A maneira preguiçosa de lidar com construtores de cópia e funções de atribuição 75 9.8 Como implementar as funções básicas de uma classe em uma classe derivada 75 9.9 Algumas percepções 77 Capítulo 10 Herança e Composição de Classe 78 10.1 Herança 78 10.2 Combinação 80 Capítulo 11 Outras experiências de programação 82 11.1 Usando CONST para melhorar a robustez da função 82 11.2 Melhorando a eficiência do programa 84 11.3 Algumas sugestões úteis 85 Referência 87 Apêndice A: Formulário 88 de revisão de código C++/C Apêndice B: questões do teste C++/C 93 Apêndice C: Respostas e critérios de pontuação para questões do teste C++/C 97