Surcharge de fonctions en C++
Dans l'écriture réelle du code, parfois la même fonction fonctionnelle peut traiter différents types d'objets, la fonction doit donc être réimplémentée, ce qui rendra le code plus compliqué. Afin de résoudre ce problème, C++ prend en charge la surcharge de fonctions pour résoudre ce problème. .
Par exemple, pour un problème de somme arithmétique, vous devez personnaliser une fonction pour recevoir les données entrantes et les résumer. Mais en tant que module indépendant, comment savoir quel type de données l'appelant a transmis ? Il peut s'agir de données entières, bien sûr, il peut s'agir de données de type virgule flottante, ou il peut s'agir d'un type entier et d'un type à virgule flottante (on ne sait pas encore lequel est le type entier et lequel est le type à virgule flottante), et une approche globale consiste à utiliser divers Chaque type de fonction de paramètre formel doit avoir une fonction définie, c'est-à-dire deux types int, deux types doubles, le premier int et le deuxième double, et le premier double et le deuxième int Définir quatre fonctions. pour l'implémentation, par exemple, les noms sont : Add_double_double(), Add_int_double(), Add_int_int(), Add_double_int(), etc. Cela ne semble-t-il pas déroutant ?
Ensuite, l'émergence de la surcharge de fonctions en C++ résout très bien ce problème. La surcharge de fonctions consiste en deux fonctions ou plus avec le même nom de fonction mais des types ou des numéros de paramètres différents. En fonction du type et du nombre de paramètres, la fonction la plus appropriée est automatiquement sélectionnée. pour les appels de liaison, et la sélection est automatiquement mise en œuvre.
Par exemple, dans l'exemple d'addition de tout à l'heure :
#include<iostream>usingnamespacestd;intadd(inta,intb){cout<<(int,int)t;returna+b;}doubleadd(doublea,doubleb){cout<<(doble,double)t;returna+ b ;}doubleadd(doublea,intb){cout<<(double,int)t;returna+b;}doubleadd(inta,doubleb){cout<<(int,double)t;returna+b;}intmain ( ){cout<<add(2,3)<<endl;cout<<add(2.9,15.3)<<endl;cout<<add(10,9.9)<<endl;cout<<add(11.5,5 ) <<endl;retour0;}
Les résultats en cours d'exécution sont les suivants :
Veuillez lire attentivement le code afin de confirmer quelle fonction est exécutée, nous ajoutons une instruction de sortie cout à l'intérieur de la fonction pour distinguer quelle fonction est appelée.
Chacun doit expérimenter par lui-même pour comprendre le code !