Pasando diferentes tipos de funciones en C ++

Las variables de coma flotante y variables de diferente tamaño en C ++ se pasan a las funciones de la misma manera que int

variables son como se demuestra en el siguiente fragmento de código. Este ejemplo fragmento pasa el valor de la variable Darg junto con const doble 0.0 a la función maximumFloat ().

// MaximumFloat - devolver el mayor de los dos flotando // punto argumentsdouble maximumFloat (doble d1, d2 doble) {if (d1> d2) {return d1-} volver D2} void otherFunction () {double Darg = 1.0 de doble dNonNegative = maximumFloat (Darg, 0.0) - // ... función continúa ...

La sobrecarga de nombres de funciones

El tipo de los argumentos son parte del nombre prolongado de la función. Así, el nombre completo de la función de ejemplo anterior es maximumFloat (doble, doble). Puede diferenciar entre dos funciones por el número de argumentos. También puede diferenciar entre dos funciones por el tipo de los argumentos, como se muestra en el siguiente ejemplo:

doble máximo (doble d1, doble 2) -intmaximum (int n1, n2 int) -

Al hacer la declaración de esta manera, está claro que la llamada máxima (1, 2) se refiere a máximo (int, int), mientras la llamada máxima (3.0, 4.0) se refiere a máximo (doble, doble).

Definición de funciones que tienen el mismo nombre pero diferentes argumentos que se llama sobrecarga de funciones.

Usted puede diferenciar por el de signo y duración, así:

int máximo (int n1, n2 int) -long máximo (l1 largo, largo l2) máxima -unsigned (UN1 sin firmar, un2 sin firmar) -

Afortunadamente, esto no suele ser necesaria en la práctica.

De modo mixto sobrecarga

Las reglas pueden ser realmente extraño cuando los argumentos en la llamada no se alinean exactamente con las declaraciones. Considere el siguiente fragmento de código de ejemplo:

doble máximo (doble d1, d2 doble) -intmaximum (int n1, n2 int) -void otherFunction () {// cuya función es invocada por el siguiente doble dNonNegative = máximo (Darg, 0) - // ... función continúa ...

Aquí los argumentos no se alinean exactamente con cualquiera de declaración. No hay máximo (doble, int). C ++ razonablemente podría tomar cualquiera de las siguientes tres opciones:

  • Promover el 0 a un doble y llamada máximo (doble, doble).

  • Degradar el doble a un int e invocar máximo (int, int).

  • Vomitar sus manos electrónicos y de informar de un error del compilador.

La regla general es que C ++ promoverá argumentos con el fin de encontrar una coincidencia, pero no degradar de forma automática una discusión. Sin embargo, no siempre se puede contar con esta regla.

No confíe en C ++ para averiguar lo que significado en cambio, hacer las conversiones necesarias explícito:

anular otherFunction (int nArg1, doble dArg2) {// utilizar una conversión explícita para asegurarse de que la // función apropiada es calleddouble dNonNegative = máximo ((doble) nArg1, dArg2) -

Ahora está claro que quieres decir para llamar máximo (doble, doble).




» » » » Pasando diferentes tipos de funciones en C ++