Différence entre la surcharge de fonctions et la redéfinition de fonctions en C ++

La surcharge et la redéfinition de fonctions sont des exemples de polymorphisme, mais elles sont complètement différentes. Avant de discuter de la différence entre les deux, commençons par en parler un peu.
 
 

La surcharge de fonctions

Il fournit plusieurs définitions du fonction en modifiant la signature, c’est-à-dire en changeant le nombre de paramètres, en modifiant le type de données des paramètres, le type de retour ne jouant aucun rôle.

Exemple de signatures d’une fonction surchargée:

void racine_carre(int a);
void racine_carre(int a, int b);

Exemple de surcharge:

#include <iostream>

using namespace std;

//La surcharge de fonctions
float multiplication(int, int);
float multiplication(float, float);
float multiplication(int, float);
float multiplication(float, int);

int main(){
   //Ceci appellera la deuxième fonction
   cout<<multiplication(12.7f, 2.7f)<<endl;

   //Ceci appellera la première fonction
   cout<<multiplication(100, 50)<<endl;

   //Ceci appellera la troisième fonction
   cout<<multiplication(50, 10.2f)<<endl;

   //Ceci appellera la quatrième fonction
   cout<<multiplication(10.8f, 20)<<endl;

   return 0;
}

float multiplication(int a, int b){
   return a+b;
}
float multiplication(float a, float b){
   return a+b;
}
float multiplication(int a, float b){
   return a+b;
}
float multiplication(float a, int b){
   return a+b;
}

La sortie:

15.4
150 
60.2
30.8
Différence entre exit 0 et exit 1Différence entre exit 0 et exit 1Quelle est la différence entre exit(0) et exit(1) ? – exit (0) et exit (1) les deux méthodes sont utilisées pour terminer le programme en…Lire plus  

La redéfinition de fonctions

La redéfinition de fonctions (arrive au moment de l’exécution) est une fonctionnalité de POO(Programmation Orienté Objet) qui nous permet de redéfinir les méthodes d’une classe mère dans une classe fille avec la même signature, c’est-à-dire le type et les paramètres de retour.

Exemple de redéfinition:

Class X
{
public: 
      virtual void afficher(){ cout << "Hello World!"; }
}

Class Y:public X
{
public: 
       void afficher(){ cout << "Welcome to WayToLearnX!";};
}

int main() 
{ 
    Y y; 
    X &x = y; 
    x.afficher();  
} 

La sortie:

Welcome to WayToLearnX!

 

Table de comparaison
Surcharge Redéfinition
Héritage La surcharge peut se produire sans héritage. Les fonctions sont écrasées lorsqu’une classe hérite d’une autre classe.
Signature de fonction: les fonctions surchargées doivent différer en signature, c’est-à-dire que le nombre de paramètres ou le type de paramètres doit être différent. En cas de redéfinition, les signatures de fonction doivent être identiques.
Portée des fonctions Les fonctions surchargées ont la même portée. Les fonctions redéfinies ont des portées différentes
Comportement des fonctions: La surcharge est utilisée pour avoir des fonctions du même nom, qui se comportent différemment en fonction des paramètres qui leur sont transmis. la redéfinition est nécessaire lorsque la méthode du classe fille doit effectuer un travail ajouté ou différent de celui de la méthode qui se trouve dans la classe mère.
Différence entre & et &&Différence entre & et && en C/C++Quelle est la différence entre & et && ? – les deux sont des opérateurs utilisés pour évaluer les instructions conditionnelles. L’opérateur & est un…Lire plus
Conclusion

Surcharger une méthode (ou une fonction) en C ++ permet de définir des fonctions du même nom, tant que ces méthodes ont des signatures différentes (ensemble de paramètres différent). La redéfinition d’une méthode est la capacité d’une classe fille à réécrire la méthode virtuelle qui se trouve dans la classe mère.
 
 

Laisser un commentaire

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