Please enable JavaScript.
Coggle requires JavaScript to display documents.
C++, Vantagens dos Templates - Coggle Diagram
C++
Capítulo 32 - Templates
Introdução aos Templates
Funções e classes genéricas
Evitam repetição de código com tipos diferentes
Automação da geração de código em C++
Tipos de Templates
Function Templates
Funções que funcionam com qualquer tipo
Class Templates
Classes parametrizadas por tipos genéricos
Reutilização e flexibilidade com diferentes tipos de dados
Instanciação de Templates
Instanciação Implícita
O compilador gera o código automaticamente
Instanciação Explícita
Geração manual do código para tipos específicos
Parâmetros em Templates
Tipos de Parâmetros
Parâmetros de Tipo: Tipos genéricos como class T
Parâmetros Constantes: Valores inteiros (ex.: tamanhos de arrays)
Restrições
Não podem ser modificados
Não permitem ponto flutuante como parâmetro
Especialização
Criar uma versão específica do template para certos tipos
Útil quando a implementação padrão é ineficiente ou inapropriada
Argumentos Padrão em Templates
Parâmetros podem ter valores padrão
Simplifica instanciação sem fornecer todos os argumentos
Segue regras semelhantes a valores padrão em funções
Capítulo 25 - Polimorfismo
Conceito de Polimorfismo
Implementação com métodos virtuais
Objetos derivados acessados como objetos da classe base
Métodos chamados dinamicamente conforme o tipo real do objeto
Métodos Virtuais
Declarados com
virtual
Redefinição mantém assinatura e tipo de retorno
Não utilizados em construtores
Destrutores Virtuais
Necessários para gerenciamento adequado de objetos dinâmicos
Garantem chamada dos destrutores em classes derivadas
Tabela de Métodos Virtuais (VMT)
Estrutura interna para vinculação dinâmica
Contém ponteiros para métodos virtuais
Casting Dinâmico
Conversão segura em hierarquias de classes
dynamic_cast
verifica validade em tempo de execução
Capítulo 26 - Classes Abstratas
Métodos Virtuais Puros
Declarados com
= 0
Classes com métodos puros são não instanciáveis
Servem como interfaces para classes derivadas
Classes Abstratas e Concretas
Classe abstrata: possui pelo menos um método puro
Classe concreta: implementa todos os métodos puros
Ponteiros e Referências
Ponteiros de base apontam para objetos derivados concretos
Interfaces polimórficas trazem flexibilidade no design
Aplicações
Listas heterogêneas armazenam objetos de diferentes tipos derivados
Atribuições Virtuais
Operadores de atribuição podem ser virtuais
Redefinição necessária em classes derivadas
Vantagens dos Templates
Código único e reutilizável para múltiplos tipos
Redução de erros e repetição de código
Facilita manutenção e testes por ser independente do tipo