Concepto de clase abstracta C ++

Una clase abstracta en C ++ es una clase con uno o más puras funciones virtuales. LA virtual pura la función es una función miembro virtual que está marcado como que no tiene aplicación. Lo más probable es que no tiene ninguna aplicación porque ninguna aplicación es posible con la información proporcionada en la clase, incluidas las clases base.

Una función virtual convencional, no pura run-of-the-mill es conocido como un función concreta (tenga en cuenta que una función concreta puede ser virtual - por desgracia, C ++ utiliza este término para referirse polimórfica.

La sintaxis para declarar una función virtual pura se demuestra en la siguiente clase Cuenta:

// Cuenta - esta clase es una Cuenta classclass abstracta {public: Cuenta (accNo sin firmar, doble initialBalance = 0.0) - Depósito functionsvoid // transacción - // acceso functionsunsigned int AccountNo () -doble acntBalance () -static int noAccounts () (cantidad doble) - // La siguiente es una pura functionvirtual virtuales vacío retiro (cantidad doble) = 0 protegidos-: // llevar una contabilidad en una lista enlazada por lo que no hay límite // al número de accountsstatic int cuenta atrás // número de accountsunsigned accountNumber-doublebalance -} -

los = 0 después de la declaración de retirada () indica que el programador no tiene la intención de definir esta función. La declaración es un marcador de posición para las subclases. Las subclases de Cuenta se espera que anular esta función con una función concreta. El programador debe proporcionar una implementación para cada función miembro no declarado virtual pura.

Algunos programadores piensan que esta notación es una tontería. Pero es aquí para quedarse, por lo que sólo tiene que aprender a vivir con ello. Hay una razón, si no exactamente una justificación, por esta notación. Cada función virtual debe tener una entrada en una mesa especial.

Esta entrada contiene la dirección de la función. Es de suponer que, al menos en algún momento, la entrada para una función virtual pura era 0. En cualquier caso, es la sintaxis le pegan con ahora.

Una clase abstracta no puede ser instanciado con un objeto- es decir, no se puede hacer que un objeto fuera de una clase abstracta. Por ejemplo, la siguiente declaración no es legal:

void fn () {// Declarar una cuenta con 100 ACNT dollarsAccount (1234, 100,00) - // esto no se legalacnt.withdrawal (50) - // lo que se puede esperar} // este llamado a hacer?

Si la declaración se les permitió, el objeto resultante sería incompleto, carente de cierta capacidad. Por ejemplo, ¿qué debe hacer la llamada anterior? Recuerde, no es ninguna Cuenta :: retirada ().

Las clases abstractas sirven como clases base para otras clases. Un Cuenta contiene todas las propiedades asociadas a una cuenta bancaria genérica. Puede crear otros tipos de cuentas bancarias heredando de Cuenta.

El término técnico es instanciar. Usted dice que la Cuenta clase no puede ser instanciada con un objeto o un objeto dado una instancia del Ahorros clase.




» » » » Concepto de clase abstracta C ++