Fonction virtuelle pure en C++

Parfois, l’implémentation de toutes les fonctions ne peut pas être fournie dans une classe de base car nous ne connaissons pas l’implémentation. Par exemple, supposons que la classe « Animale » soit une classe de base. Nous ne pouvons pas fournir l’implémentation de la fonction move() dans la classe « Animale », (en supposant que tous les animaux bougent), mais tous les animaux doivent savoir comment se déplacer. Nous ne pouvons pas créer des objets de classes abstraites.
 
 
Une fonction virtuelle est une fonction membre de la classe de base que vous comptez redéfinir dans des classes dérivées.
Fonction virtuelle en C++

Exemple : Fonction virtuelle pure en C++
// Classe abstraite
class MaClasse 
{
  public: 
      // Fonction virtuelle pure
      virtual void myFunction() = 0; 

};

 
 

Exemple complet:
#include<iostream>

using namespace std; 
  
class Message 
{ 
	public: 
		virtual void say() = 0; 
}; 

//Cette classe hérite de la classe Message et implémente la fonction say()
class Welcome : public Message 
{ 
	public: 
		void say() { cout << "Hi, Welcome to WayToLearnX!"; } 
}; 
  
int main() 
{ 
    Welcome w; 
    w.say(); 
    return 0; 
}

La sortie :
 

 
 

Une réflexion sur “Fonction virtuelle pure en C++

  • novembre 4, 2021 à 11:00 am
    Permalien

    Vous dites « Une fonction virtuelle pure (ou fonction abstraite) en C++ est une fonction virtuelle pour laquelle nous n’avons pas d’implémentation, nous avons juste la déclaration ».

    Or, il peut y avoir une implémentation dans une méthode virtuelle pure. Cette implémentation peut être un traitement commun que des classes dérivées pourront appeler.

    Exemple :
    Supposons que nous écrivions une librairie sur les B-Arbres. Nous souhaitons traiter la problématique des clés dupliquées. Nous aurons une hiérarchie de clés. Une méthode virtuelle (pure dans la classe de base) nous dira la relation entre 2 clés C1 et C2 : C1C2.
    Pour les clés dupliquées (donc C1==C2) la différentiation se fera sur la position de l’objet pointé par la clé dans le flux de données. Cette différentiation sera réalisée dans la méthode virtuelle pure abstraite de la classe de base. Cette méthode de la classe de base sera appelée par les méthodes des classes dérivées en cas d’égalité.

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *