Classe abstraite en C++
En C++, une classe avec une fonction virtuelle pure est appelée une classe abstraite. Par exemple, la fonction suivante est une fonction virtuelle pure:
virtual void myFunction() = 0;
Une fonction virtuelle pure est marquée avec le mot clé virtual et l’affectation (=0) après sa signature. Vous pouvez appeler cette fonction une fonction abstraite car elle n’a pas de corps. La classe fille doit implémenter toutes les fonctions virtuelles pures de la classe parente, sinon elle deviendra une classe abstraite par défaut.
Les interfaces en C++ sont implémentées à l’aide des classes abstraites et ces classes abstraites ne doivent pas être confondues avec l’abstraction de données, concept qui consiste à conserver les détails de l’implémentation séparément des données associées.
Exemple: Classe abstraite en C++
#include <iostream> using namespace std; // Classe abstraite class A { public: virtual void show1()=0; //Fonction virtuelle pure virtual void show2()=0; //Fonction virtuelle pure void show3() { cout << " C'est la méthode show3 de la classe mére" << endl; } }; class B : public A { public: void show1() { cout << " C'est la méthode show1 de la classe fille" << endl; } void show2() { cout << " C'est la méthode show2 de la classe fille" << endl; } }; int main() { B b; b.show1(); b.show2(); b.show3(); return 0; }
La sortie :
Les règles de classe abstraite
- Les classes abstraites sont utilisées pour représenter des concepts généraux (par exemple, Forme, Animal), qui peuvent être utilisés comme classes de base pour des classes concrètes (par exemple, Cercle, Chien).
- Aucun objet d’une classe abstraite ne peut être créé.
- Les types abstraits ne peuvent pas être utilisés en tant que types de paramètres, ou en tant que types de retour de fonction.
- Les pointeurs et les références vers une classe abstraite peuvent être déclarés.