- Incapsulamento ed estensibilità dei Tipi
- Ereditarietà
- Polimorfismo
- L' Overload
- Funzioni Virtuali
- I Membri Statici di una classe
- Templates di Funzioni
- Templates delle Classi
- Classi Astratte
Classi Astratte e Funzioni Virtuali Pure
Le classi astratte vengono utilizzate per la creazione di entità generiche, che prevedi di utilizzare per creare classi derivate più specifiche. Una classe astratta può essere utilizzata solo come classe base per un'altra classe, motivo per cui è impossibile creare un oggetto del tipo di classe astratta.
Una classe che contiene almeno una pura funzione virtuale è astratta. Pertanto, le classi derivate dalla classe astratta devono implementare tutte le sue pure funzioni virtuali, altrimenti saranno anche classi astratte.
Una funzione virtuale viene dichiarata "pura" utilizzando la sintassi degli specificatori puri. Si consideri l'esempio della classe CAnimal, che viene creata solo per fornire funzioni comuni - gli oggetti del tipo CAnimal sono troppo generici per l'uso pratico. Quindi, CAnimal è un buon esempio per una classe astratta:
class CAnimal |
Qui Sound() è una pura funzione virtuale, perché è dichiarata con l'identificatore della funzione virtuale pura PURE (=0).
Le funzioni virtuali pure sono solo le funzioni virtuali per le quali è impostato lo specificatore PURE: (=NULL) o (=0). Esempio di dichiarazione di classe astratta e uso:
class CAnimal
|
Restrizioni su classi astratte
Se il costruttore di una classe astratta chiama una funzione virtuale pura (direttamente o indirettamente), il risultato non è definito.
//+------------------------------------------------------------------+
|
Tuttavia, costruttori e distruttori per le classi astratte possono chiamare altri membri di funzione.