Programar em C++/Herança: diferenças entre revisões

Síntese...
[edição não verificada][edição não verificada]
Sem resumo de edição
(Síntese...)
 
== Superposição de funções ==
 
Podemos criar duas funções na mesma classe com nomes iguais e parâmetros diferentes, chamamos este recurso de sobrecarga.
 
== Ocultando funções da classe base ==
 
Muitas vezes temos classes derivadas que executam uma determinada ação de forma distinta da mesma ação definida na classe base. Por exemplo, se temos uma classe "animal" e declaramos uma função chamada "mover" e depois declaramos duas derivadas: "ave" e "peixe" com a mesma função "mover" teremos uma incoerência devido ao fato de que peixes se movem de forma totalmente diferente de aves. Uma vez que peixes devem "nadar" e "aves" podem "voar" ou "andar" nosso modelo de objetos está incorreto.
Por questões de coerência semântica, porém, precisamos manter o mesmo nome para as funções das classes base e derivada em algumas construções. Isto é essencial devido a necessidade de criarmos objetos generalistas, por exemplo se tivermos classes "ave" e "peixe" abstraídas em uma base "animal", como vimos acima. Havendo estas condições, como poderemos criar comportamentos diferentes usando o mesmo nome para as funções?
 
A resposta está em uma das características deque polimorfismoserá maismuito simplesútil quando quisermos usar de polimorfismo, que iremos abordar nesteem tópicocapítulo específico mais adiante: a ocultação e superposição de funções da classe base a partir de uma classe derivada (conhecida como "overriding" em manuais de compiladores). Com este recurso podemos declarar em uma classe derivada uma função com nome e parâmetros idênticos a uma existente em uma classe base, porém com conteúdo diferente.
 
== Acessando funções superpostas da classe base ==