Concept Classe Abstract ++ C

Uma classe abstrata em C ++ é uma classe com um ou mais pura funções virtuais. UMA virtual pura função é uma função membro virtual que está marcado como não tendo nenhuma implementação. O mais provável é que não tem aplicação porque nenhuma aplicação é possível com as informações fornecidas na classe, incluindo quaisquer classes de base.

A função virtual convencional, run-of-the-mill não-puro é conhecido como um função concreta (Note que uma função concreta pode ser virtual - infelizmente, C ++ usa este termo para significar polimórfico.

A sintaxe para declarar uma função virtual pura é demonstrado no seguinte classe Conta:

// Conta - esta classe é uma conta classclass abstrato {public: Account (unsigned accNo, double initialBalance = 0.0) - depósito de functionsvoid // transação - // acesso functionsunsigned int AccountNo () -duplo acntBalance () -static int noAccounts () (valor duplo) - // o seguinte é uma functionvirtual virtual retirada puro vazio (valor duplo) =-protegida 0: // manter contas em uma lista vinculada por isso não há limite // para o número de accountsstatic int // número count- de accountsunsigned accountNumber-doublebalance -} -

o = 0 após a declaração de retirada() indica que o programador não tem a intenção de definir esta função. A declaração é um espaço reservado para as subclasses. As subclasses de Conta Espera-se que substituir essa função com uma função concreta. O programador deve fornecer uma implementação para cada função de membro não declarada pura virtual.

Alguns programadores acho que esta notação é bobagem. Mas é aqui para ficar, então você apenas tem que aprender a viver com ela. Há uma razão, se não exatamente uma justificação para esta notação. Cada função virtual deve ter uma entrada em uma tabela especial.

Esta entrada contém o endereço da função. Presumivelmente, pelo menos, de uma só vez, a entrada para uma função virtual pura era 0. Em qualquer caso, é a sintaxe que você está preso com agora.

Uma classe abstrata não pode ser instanciado com um object- isto é, você não pode fazer um objeto de uma classe abstrata. Por exemplo, a seguinte declaração não é legal:

vazio fn () {// declara uma conta com 100 ACNT dollarsAccount (1234, 100,00) - // isso não é legalacnt.withdrawal (50) - // o que você espera} // esta chamada para fazer?

Se a declaração fosse permitido, o objeto resultante seria incompleta, faltando em alguma capacidade. Por exemplo, qual deve ser a resposta anterior fazer? Lembre-se, não há Conta :: retirada ().

As classes abstratas servir como classes base para outras classes. A Conta contém todas as propriedades associadas a uma conta bancária genérico. Você pode criar outros tipos de contas bancárias por herança de Conta.

O termo técnico é instanciar. Você diz que o Conta classe não pode ser instanciado com um objeto ou um determinado objeto instancia o Poupança classe.

menu