Classi astratte (C ++)
Le classi astratte fungono da espressioni di concetti generali da cui è possibile derivare classi più specifiche. Non è possibile creare un oggetto di un tipo di classe astratta; tuttavia, è possibile utilizzare i puntatori e i riferimenti ai tipi di classe astratta.
Una classe che contiene almeno una funzione virtuale pura è considerata una classe astratta. Le classi derivate dalla classe astratta devono implementare la funzione virtuale pura o sono anch'esse classi astratte.
Una funzione virtuale viene dichiarata come "pura" tramite la sintassi di pure-specifier (descritta in Implementazione del protocollo di classe. Si consideri l'esempio illustrato in Funzioni virtuali. Lo scopo della classe Account è di fornire la funzionalità generale, ma gli oggetti di tipo Account sono troppo generici per essere utili. Pertanto, Account rappresenta una scelta valida per una classe astratta:
// deriv_AbstractClasses.cpp
// compile with: /LD
class Account {
public:
Account( double d ); // Constructor.
virtual double GetBalance(); // Obtain balance.
virtual void PrintBalance() = 0; // Pure virtual function.
private:
double _balance;
};
L'unica differenza tra questa dichiarazione e la precedente è che PrintBalance è dichiarato con l'identificatore pure (= 0).