Polimorfismo de C++
“Polimorfismo: é a capacidade de criar código capaz de operar (ou pelos menos, aparentar operar) sobre valores de tipos distintos.”
Polimorfismo do tipo Adhoc:
Ocorre quando um mesmo símbolo ou identificador é associado a diferentes trechos de código que atuam sobre diferentes tipos. Há dois tipos de Adhoc:
- Coerção: Conversão implícita de tipos, ou seja, quem faz a conversão é a própria linguagem, assim se tem um Aumento à redigibilidade, porém Sacrifica a confiabilidade. A Coerção pode ser por 3 tipos:
- Ampliação (operação segura): tipo de maior conjunto := tipo de menor conjunto.
double = int >> double x = 1;
- Estreitamento (operação Não segura, pois há perdas): tipo de menor conjunto := tipo de maior conjunto.
int = double >> int x = 3.14;
- Nem por Ampliação e Nem por Estreitamento:
int (todos os valores) = unsigned int (apenas os valores absolutos);
- Sobrecarga: Ocorre quando um mesmo operador pode ser usado para designar duas ou mais operações distintas. Em C++ há sobrecarga nos operadores e subprogramas da biblioteca padrão e o Programador pode sobrecarregar alguns operadores.
Polimorfismo do tipo Universal:
Uma mesma implementação pode atuar sobre elementos diferentes. Há dois tipos de Universal:
- Paramétrico: Permitem construir abstrações de dados e controle que atuam uniformemente sobre diversos tipos. O C++ implementa polimorfismo paramétrico através de gabaritos, que fazem o compilador gere uma instância separada da classe. Os gabaritos em C++ fornecem um mecanismo sofisticado para a criação de código genérico polimórfico. Em particular, por meio da técnica Curiously Recurring Template Pattern é possível implementar uma forma de polimorfismo estático que imita a sintaxe para substituir as funções virtuais.
Exemplo de Template:
- Inclusão: É característico de LPs OO. Se baseia no uso de uma hierarquia de tipos para criar abstrações de dados e controle.
Herança:
A ideia consiste em definir novas classes a partir das já existentes, aproveitando suas características.
-
Em C++ é possível de forma direta a Herança Múltipla. Uma classe necessite herdar de duas ou mais classes:
Fontes:
https://pt.wikipedia.org/wiki/Polimorfismo
https://progcmaismais.blogspot.com.br/2011/02/20-c-heranca-de-classes.html#more
https://progcmaismais.blogspot.com.br/search/label/20%20-%20Polimorfismo