Surcharge de fonctions en C ++: tout ce que vous devez savoir

Cet article vous fournira une connaissance détaillée et complète de la surcharge de fonctions en C ++ avec de nombreux exemples à comprendre.

C ++ est l'un de ces langages de programmation qui est très flexible et il couvre également plusieurs fonctionnalités de la programmation orientée objet. La surcharge est une autre caractéristique de ce langage de programmation.Les pointeurs suivants seront traités dans cet article «Surcharge de fonctions en C ++».

Surcharge C ++

Lorsque nous créons deux membres ou plus d'une classe ayant le même nom mais différents en nombre ou en type de paramètres, on parle de surcharge C ++. En C ++, on peut surcharger:





  • méthodes,
  • constructeurs, et
  • propriétés indexées

Types de surcharge en C ++

types-of-overloading-in-c++

Qu'est-ce que la surcharge de fonctions en C ++?

La surcharge de fonctions en C ++ peut être définie comme le processus consistant à avoir deux fonctions membres ou plus d'une classe avec le même nom, mais des paramètres différents. Dans la surcharge de fonction, la fonction peut être redéfinie en utilisant différents types d'arguments ou un nombre différent d'arguments selon l'exigence. Ce n'est que grâce à ces différences que le compilateur peut différencier les deux fonctions surchargées.



L’un des principaux avantages de la surcharge de fonctions est qu’elle augmente la lisibilité du programme car nous n’avons pas besoin d’utiliser des noms différents pour la même action encore et encore.

comment arrêter le programme en java

En modifiant le nombre d'arguments

Dans cette façon de surcharge de fonctions, on définit deux fonctions avec les mêmes noms mais un nombre différent de paramètres du même type. Par exemple, dans le programme mentionné ci-dessous, nous avons créé deux fonctions add () pour renvoyer la somme de deux et trois entiers.

// première définition de fonction int add (int a, int b) {cout<< a+b } // second overloaded function definition int add(int a, int b, int c) { cout << a+b+c }

Ici, la fonction add () est dite surchargée, car elle a deux définitions, une qui accepte deux arguments et une autre qui accepte trois arguments. La fonction add () qui sera appelée dépend du nombre d'arguments.



int main () {add (10, 20) // add () avec 2 paramètres sera appelé add (10, 20, 30) // sum () avec 3 paramètres sera appelé}
#include en utilisant l'espace de noms std int add (int a, int b) {cout<< a+b <

Dans l'exemple ci-dessus, nous surchargons la fonction add () en modifiant son nombre d'arguments. Tout d'abord, on définit une fonction add () avec deux paramètres, puis on la surcharge en définissant à nouveau la fonction add () mais cette fois avec trois paramètres.

En ayant différents types d'arguments

Dans cette méthode, nous définissons deux ou plusieurs fonctions avec le même nom et le même nombre de paramètres, mais le type de données utilisé pour ces paramètres est différent. Par exemple dans ce programme, nous avons trois fonctions add (), le premier obtient deux arguments entiers, le second obtient deux arguments flottants et le troisième obtient deux arguments doubles.

#include en utilisant l'espace de noms std int add (int x, int y) // première définition {cout<< x+y << endl return 0 } float add(float a, float b) { cout << a+b << endl return 0 } double add(double x, double y) { cout << x+y << endl return 0 } int main() { add(20, 40) add(23.45f, 34.5f) add(40.24, 20.433) }

Dans l'exemple ci-dessus, nous définissons la fonction add () trois fois. D'abord en utilisant des entiers comme paramètres, ensuite en utilisant float comme paramètres et en troisième en utilisant double comme paramètre.
Ainsi, nous remplaçons deux fois la fonction add ().

Avantages de la surcharge de fonctions en C ++

  • Nous utilisons la surcharge de fonctions pour économiser l'espace mémoire, la cohérence et la lisibilité de notre programme.

  • Avec le concept de surcharge de fonction d'utilisation, nous pouvons développer plus d'une fonction avec le même nom

  • La surcharge de fonction montre le comportement du polymorphisme qui nous permet d'obtenir un comportement différent, bien qu'il y ait un lien utilisant le même nom de la fonction.

  • La surcharge de fonctions accélère l'exécution du programme.

  • La surcharge de fonction est utilisée pour la réutilisation du code et également pour économiser de la mémoire.

  • Cela aide l'application à charger la méthode de classe en fonction du type de paramètre.

  • La maintenance du code est facile.

Inconvénients de la surcharge de fonctions en C ++

  • Les déclarations de fonction qui diffèrent uniquement par son type de retour ne peuvent pas être surchargées par le processus de surcharge de fonction.
  • Les déclarations de fonction membre avec les mêmes paramètres ou les mêmes types de nom ne peuvent pas être surchargées si l'une d'elles est déclarée en tant que fonction membre statique.
  • class XYZ {static void func () void func () // error}

Surcharge de fonction et ambiguïté

Lorsque le compilateur est incapable de décider quelle fonction il doit appeler en premier parmi les fonctions surchargées, cette situation est connue sous le nom d'ambiguïté de surcharge de fonction. Le compilateur n'exécute pas le programme s'il affiche une erreur d'ambiguïté. Causes de l'ambiguïté de surcharge de fonction:

différence entre étend et implémente en java
  • Conversion de type.
  • Fonction avec des arguments par défaut.
  • Fonction avec un passage par référence

Conversion de type:

#include using namespace std void function (float) void function (int) void function (float x) {std :: cout<< 'Value of x is : ' <

L’exemple ci-dessus génère une erreur - «l’appel d’une« fonction (double) »surchargée est ambiguë». La fonction (3.4) appellera la première fonction. La fonction (34) appelle la deuxième fonction selon notre prédiction. Mais ce n'est pas ce qui se passe car en C ++ toutes les constantes à virgule flottante sont traitées comme un double et non comme un flottant. Si nous remplaçons la variable float par une variable double, le programme fonctionnera correctement. Par conséquent, nous appelons cela une erreur de conversion de type de float en double.

qu'est-ce que sqoop dans hadoop

Fonction avec des arguments par défaut:

#include en utilisant l'espace de noms std void function (int) void function (int, int) void function (int x) {std :: cout<< 'Value of x is : ' <

L’exemple ci-dessus donne une erreur indiquant que «l’appel de‘ fun (int) ’surchargé est ambigu», car la fonction (int y, int z = 12) peut être appelée de deux manières:

  1. En appelant la fonction avec un argument (et elle prendra automatiquement la valeur de z = 12)
  2. En appelant la fonction avec deux arguments.

Lorsque nous appelons la fonction: function (12), nous remplissons complètement la condition de la fonction (int) et de la fonction (int, int) ainsi le compilateur entre dans une ambiguïté et montre une erreur.

Fonction avec passe par référence

#include en utilisant l'espace de noms std void function (int) void function (int &) void function (int a) {std :: cout<< 'Value of a is : ' < 

Le programme ci-dessus donne une erreur disant 'l'appel de' fun (int &) 'surchargé est ambigu'. Comme nous le voyons, la première fonction prend un argument entier et la seconde fonction prend un paramètre de référence comme argument. Dans ce cas, le compilateur n'est pas capable de comprendre quelle fonction est nécessaire à l'utilisateur car il n'y a pas de différence syntaxique entre fun (int) et fun (int &) donc il tire une erreur d'ambiguïté.

Avec cela, nous arrivons à la fin de cette surcharge de fonctions en C ++. Si vous souhaitez en savoir plus, consultez le par Edureka, une entreprise d'apprentissage en ligne de confiance. Le cours de formation et de certification Java J2EE et SOA d'Edureka est conçu pour vous former aux concepts Java de base et avancés ainsi qu'à divers frameworks Java tels que Hibernate et Spring.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de ce blog et nous vous répondrons dans les plus brefs délais.