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 las variables son como se demuestra en el siguiente fragmento de código. Este fragmento de ejemplo 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 flotante // punto argumentsdouble maximumFloat (doble d1, d2 doble) {if (d1 gt; d2) {return d1-} retorno 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 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, doble2) -intmaximum (int n1, n2 int) -

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

Video: Tutorial 13 de C++ - Tipos de funciones

La definición de las funciones que tienen el mismo nombre pero diferentes argumentos que se llama la sobrecarga de funciones.

Puede diferenciar por el signo numérico y duración, así:

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

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

sobrecarga de modo mixto

Las reglas se pueden poner muy raro cuando los argumentos en la llamada no se alinean exactamente con las declaraciones. Considere el siguiente fragmento de código de ejemplo:

máximo doble (doble d1, d2 doble) -intmaximum (int n1, n2 int) -void otherFunction () {// que la función es invocada por la 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áxima (doble, int). C ++ razonablemente podría tomar cualquiera de las tres opciones siguientes:

  • Promover el 0 a una doble y llama máxima (doble, doble).

    Video: 15. Funciones en C

  • Degradar el doble a una int e invocar máxima (int, int).

  • Vomitar sus manos electrónicos e informar de un error de compilación.

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 decir- su lugar, hacer las conversiones necesarias explícita:

otherFunction anular (int nArg1, doble dArg2) {// usar 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 quiere decir que llamar máxima (doble, doble).

Artículos Relacionados