Passant différents types de fonctions en C ++

Les variables à virgule flottante et les variables de taille différente en C ++ sont passés aux fonctions de la même manière que int

Sommaire

variables sont comme démontré dans l'extrait de code suivant. Cet exemple extrait transmet la valeur de la variable DARG avec le const double- 0,0 à la fonction maximumFloat ().

// MaximumFloat - retourner le plus grand des deux flottante // point de argumentsdouble maximumFloat (Double d1, double d2) {if (d1> d2) {return d1-} return D2} otherFunction void () {double-DARG = 1.0 double dNonNegative = maximumFloat (DARG, 0.0) - // ... fonction continue ...

Surcharge des noms de fonction

Le type des arguments sont une partie du nom étendu de la fonction. Ainsi, le nom complet de la fonction antérieure exemple est maximumFloat (doubles, doubles). Vous pouvez différencier entre les deux fonctions par le nombre d'arguments. On peut également différencier les deux fonctions par le type des arguments, comme illustré dans l'exemple suivant:

à double maximale (Double d1, Double2) -intmaximum (int n1, n2 int) -

Quand vous faites la déclaration de cette façon, il est clair que l'appel maximale (1, 2) fait référence à maximale (int, int), tandis que l'appel maximale (3.0, 4.0) fait référence à maximale (doubles, doubles).

Fonctions qui ont le même nom, mais la définition de différents arguments est appelé la surcharge de fonction.

Vous pouvez différencier par le signedness et la longueur ainsi:

int maximale (int n1, n2 int) -Long maximale (long l1, l2 longue) maximale -unsigned (UN1 non signé, non signé un2) -

Heureusement, cela est rarement nécessaire dans la pratique.

Mode mixte surcharge

Les règles peuvent obtenir vraiment bizarre lorsque les arguments de l'appel ne sont pas alignés exactement avec les déclarations. Prenons l'exemple de code extrait suivant:

à double maximale (d1 à double, double d2) -intmaximum (int n1, n2 int) -void otherFunction () {// dont la fonction est invoquée par la double dNonNegative = maximale suivante (DARG, 0) -? ... // fonction continue ...

Voici les arguments ne sont pas alignés exactement avec soit déclaration. Il n'y a pas maximale (double, int). C ++ pouvait raisonnablement prendre l'une des trois options suivantes:


  • Promouvoir le 0 à un double et appel maximale (doubles, doubles).

  • Abaisser la double à un int et invoquer maximale (int, int).

  • Lever les bras et électroniques signaler une erreur du compilateur.

La règle générale est que le C ++ favorisera arguments afin de trouver un match, mais ne sera pas rétrograder automatiquement un argument. Cependant, vous ne pouvez pas toujours compter sur cette règle.

Ne comptez pas sur C ++ pour comprendre ce que vous significations à la place, faire les conversions nécessaires explicite:

annuler otherFunction (int nArg1, double dArg2) {// utiliser une conversion explicite pour vous assurer que le bon fonctionnement // est calleddouble dNonNegative = maximale ((double) nArg1, dArg2) -

Maintenant, il est clair que vous entendez appeler maximale (doubles, doubles).


» » » » Passant différents types de fonctions en C ++