Dans des circonstances normales , les méthodes en C + + ne peut pas partager le même nom . Cela provoque des erreurs en introduisant la possibilité de confusion dans les références de la méthode. Un programmeur qui souhaite utiliser le même nom pour une méthode, mais de redéfinir cette méthode en fonction de différents paramètres , dispose de deux options. Le programmeur peut surcharger la fonction en utilisant le même nom, mais en changeant les arguments de la méthode . En outre, si le programmeur utilise une classe dérivée , il ou elle peut remplacer une fonction d'une classe de base pour effectuer des fonctions différentes. Surcharge Méthodes
fois un programmeur déclare une méthode , ce nom ne peut généralement pas désigner une autre méthode avec un code différent à l'intérieur. L'exclusion à cette règle est lorsque les arguments de la méthode diffèrent. Par exemple , un programmeur peut définir la méthode "calculer" pour prendre un entier comme argument :
int calculer (int x )
Selon les règles de C + + , une autre méthode appelée " calculer " qui prend un entier comme argument pourrait ne pas exister , quel que soit le code à l'intérieur du procédé . Mais , une autre méthode avec le même nom et les différents arguments ne pourrait exister :
int calculer (le double x )
Le type ou argument lorsque la méthode est appelée seraient décider quelle méthode exécute
. Photos, illustrations et limitations
Il existe des restrictions sur la façon dont la surcharge de méthode œuvres en C + + . Afin de surcharger un nom de méthode, les arguments doivent utiliser différents types de données , ou différer du montant des arguments désignés. Les méthodes qui retournent des valeurs différentes , mais partagent un nom et une liste d'arguments identiques, ne sont pas autorisées en C + + . Les méthodes avec des noms et des arguments identiques qui ne diffèrent que d'un nom de type différent ( ou de donner un type de données existant un nom différent ) ne sont pas autorisés . Par exemple:
typdef int fake_int ;
int write ( int x )
à double écriture ( int x )
int write ( fake_int x )
Aucun de ces trois définitions de méthodes suivre les règles de la surcharge de méthode et renverra une erreur .
Dérivation
une autre façon de surcharger un méthode est par dérivation de classe . Lors de la construction de classe , un programmeur peut faire une classe hérite de la fonctionnalité d'une autre classe . L' (dérivé ) de classe héritant peut utiliser les méthodes de la classe dont il hérite ( classe de base ) . Une classe de base (classe X) pourrait avoir une méthode "print" définie. Une autre classe (classe Y) qui dérive de la classe X a également accès à imprimer . Cependant , la classe Y pourrait aussi définir sa propre version de la méthode d'impression. Dans ce cas, la méthode d'impression exécuté sera celui défini dans la classe Y, à moins que le programmeur précise que la version X de classe de l'impression doit s'exécuter.
Exemples
un exemple d'une méthode redéfinie par une classe dérivée comporte deux classes. Tout d'abord, la classe de base :
classe
première (produits
publique :
int x , int
returnX () {
retour
x ;
}
};
Puis , une classe dérivée qui redéfinit le " returnX ()» méthode :
classe
Deuxièmement: Première publique { Photos
publique :
int returnX () { return x
+1;
}
};
< p > le "Second" classe a accès à la variable "x" et la méthode " returnX ()" qui font partie de la "première" classe. Cependant , Second redéfinit le returnX () dans sa propre définition . Cela signifie que lorsque un objet de deuxième classe appelle la méthode returnX ( ), la valeur de retour sera x +1 .