En este tutorial, aprenderemos sobre la sobrecarga de funciones en C ++ con ejemplos.
En C ++, dos funciones pueden tener el mismo nombre si el número y / o tipo de argumentos pasados es diferente.
Estas funciones que tienen el mismo nombre pero diferentes argumentos se conocen como funciones sobrecargadas. Por ejemplo:
// same name different arguments int test() ( ) int test(int a) ( ) float test(double a) ( ) int test(int a, double b) ( )
Aquí, las 4 funciones son funciones sobrecargadas.
Tenga en cuenta que los tipos de retorno de todas estas 4 funciones no son los mismos. Las funciones sobrecargadas pueden tener o no diferentes tipos de retorno, pero deben tener diferentes argumentos. Por ejemplo,
// Error code int test(int a) ( ) double test(int b)( )
Aquí, ambas funciones tienen el mismo nombre, el mismo tipo y el mismo número de argumentos. Por lo tanto, el compilador arrojará un error.
Sobrecarga de funciones usando diferentes tipos de parámetros
// Program to compute absolute value // Works for both int and float #include using namespace std; // function with float type parameter float absolute(float var)( if (var < 0.0) var = -var; return var; ) // function with int type parameter int absolute(int var) ( if (var < 0) var = -var; return var; ) int main() ( // call function with int type parameter cout << "Absolute value of -5 = " << absolute(-5) << endl; // call function with float type parameter cout << "Absolute value of 5.5 = " << absolute(5.5f) << endl; return 0; )
Salida
Valor absoluto de -5 = 5 Valor absoluto de 5.5 = 5.5Trabajo de sobrecarga para la función absoluta ()
En este programa, sobrecargamos la absolute()
función. Según el tipo de parámetro pasado durante la llamada a la función, se llama a la función correspondiente.
Sobrecarga de funciones usando diferentes números de parámetros
#include using namespace std; // function with 2 parameters void display(int var1, double var2) ( cout << "Integer number: " << var1; cout << " and double number: " << var2 << endl; ) // function with double type single parameter void display(double var) ( cout << "Double number: " << var << endl; ) // function with int type single parameter void display(int var) ( cout << "Integer number: " << var << endl; ) int main() ( int a = 5; double b = 5.5; // call function with int type parameter display(a); // call function with double type parameter display(b); // call function with 2 parameters display(a, b); return 0; )
Salida
Número entero: 5 Número flotante: 5.5 Número entero: 5 y número doble: 5.5
Aquí, la display()
función se llama tres veces con diferentes argumentos. Dependiendo del número y tipo de argumentos pasados, display()
se llama a la función correspondiente .
El tipo de retorno de todas estas funciones es el mismo, pero no es necesario que sea el caso de la sobrecarga de funciones.
Nota: En C ++, muchas funciones de biblioteca estándar están sobrecargadas. Por ejemplo, la sqrt()
función puede tomar double
, float
, int,
etc. como parámetros. Esto es posible porque la sqrt()
función está sobrecargada en C ++.