Il arrive souvent que la méthode virtuelle définie
dans la classe de base serve de cadre générique
pour les méthodes virtuelles des classes dérivées.
Ceci permet de garantir une bonne homogénéité
de votre architecture de classes.
Une classe est dite abstraite si elle contient au moins
une méthode virtuelle pure (une méthode virtuelle
pure se déclare en ajoutant un = 0 à la fin
de sa déclaration).
On ne peut pas créer d'instance d'une classe abstraite
de même qu’une classe abstraite ne peut pas
être utilisée comme argument ou type de retour
d'une fonction. Par contre, les pointeurs et les références
sur une classe abstraite sont parfaitement légitimes
et justifiés.
Exemple :
class maClasse {
public:
virtual void mafonction ( ) const = 0;
};
void main( ) {
maClasse c; // ERREUR
}