Classes abstratas em C ++

Como intelectualmente satisfatória como factoring está em C ++, que introduz um problema próprio. Em um exemplo sobre a conta aulas bancários, especificamente a classe base comum Conta. Pense por um minuto sobre como você pode ir sobre a definição das diferentes funções de membro definidas na Conta.

A maioria Conta funções de membro não são um problema porque ambos os tipos de contas de implementá-las da mesma forma. Execução dessas funções comuns com Conta::retirada() é diferente, no entanto.

As regras para a retirada de uma conta de poupança são diferentes daqueles para a retirada de uma conta corrente. Você vai ter que implementar Poupança :: retirada () diferente do que você Verificando :: retirada (). Mas como você é suposto para implementar Conta :: retirada ()?

Vamos pedir ao gerente do banco para obter ajuda. A conversa poderia ir algo como o seguinte:

# 147 Quais são as regras para fazer uma retirada de uma conta? # 148- você pedir.
# 147 Que tipo de conta? Corrente ou poupança? # 148- vem a resposta.
Nº 147-A partir de uma conta, # 148- você diz. # 147-Just uma conta. # 148-
olhar vazio.

O problema é que a pergunta não faz sentido. Não há tal coisa como # 147, a apenas uma conta. # 148- Todas as contas (neste exemplo) são ou contas correntes ou contas de poupança. O conceito de uma conta é abstrata que fatores fora propriedades comuns às duas classes concretas.

É incompleta porque não tem a propriedade crítica retirada(). (Depois de obter ainda mais em detalhes, você pode encontrar outras propriedades que uma conta simples não tem.)

A classe abstrata é aquele que só existe em subclasses. UMA classe concreta é uma classe que não é abstrato.

menu