Funções virtuais puras e classes abstratas
Uma função virtual pura é uma função virtual sem corpo de função. O que significa não ter corpo funcional? Esta é a função definida assim:
nome da função do valor de retorno virtual (parâmetro formal) = 0;
Como você pode ver, a definição de função virtual e virtual é a mesma de antes, com =0 adicionado no final. Indica que não há corpo de função, esta é uma função virtual pura . Uma classe que contém funções virtuais puras é uma classe abstrata . Uma classe abstrata possui pelo menos uma função virtual pura.
A existência de classes abstratas é fornecer uma interface unificada e altamente abstrata para o mundo exterior e, em seguida, usar seus diferentes métodos por meio de recursos polimórficos. Esta é uma das idéias centrais do design orientado a objetos e da engenharia de software em C++.
As características das classes abstratas são resumidas da seguinte forma:
1. Uma classe abstrata não pode instanciar um objeto. Ela só pode ser usada como uma classe base para permitir que classes derivadas completem as funções virtuais puras nele e, em seguida, instanciem-no e usem-no.
2. A classe abstrata derivada ainda pode completar incompletamente as funções virtuais puras na classe base e continuar a ser derivada como uma classe abstrata. Até que a definição de todas as funções virtuais puras seja dada, ela se torna uma classe concreta e o objeto não pode ser instanciado.
3. Como as classes abstratas são abstratas e não podem ser incorporadas, elas não podem ser usadas como tipos de parâmetros, valores de retorno ou tipos de conversão.
4. Continuando com o terceiro item, as classes abstratas podem definir um ponteiro ou tipo de referência apontando para sua classe derivada para obter características polimórficas.