Classes abstraites (C++)
Les classes abstraites agissent comme des expressions de concepts généraux dont des classes plus spécifiques peuvent être dérivées. Vous ne pouvez pas créer un objet d'un type de classe abstraite ; en revanche, vous pouvez utiliser des pointeurs et des références à des types de classe abstraite.
Une classe contenant au moins une fonction virtuelle pure est considérée comme une classe abstraite. Les classes dérivées de la classe abstraite doivent implémenter la fonction virtuelle pure, sinon elles aussi sont des classes abstraites.
Une fonction virtuelle est déclarée comme « pure » à l'aide de la syntaxe pure-specifier (décrite dans Implémentation de protocole de classe). Prenons l'exemple présenté dans Fonctions virtuelles. L'objectif de la classe Account est de fournir une fonctionnalité générale, mais les objets de type Account sont trop généraux pour être utiles. Par conséquent, Account est un bon candidat pour une classe abstraite :
// 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;
};
La seule différence entre cette déclaration et la précédente vient du fait que PrintBalance est déclaré avec le spécificateur pure (= 0).