English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ Tutoriales básicos

C++ Control de flujo

C++ Función

C++ Arreglo & cadena

C++ Estructuras de datos

C++ Clase & objeto

C++ Punteros

C++ Herencia

C++ Tutorial STL

C++ Manual de referencia

C++ Sobrecarga de funciones

Dos o más funciones con el mismo nombre pero diferentes parámetros se denominan funciones sobrecargadas. En este artículo, aprenderá sobre la sobrecarga de funciones a través de ejemplos.

Funciónse refiere a un fragmento de código que agrupa el código para ejecutar tareas específicas.

En C ++En la programación, si se pasan parámetros de diferentes cantidades o tipos, dos funciones pueden tener el mismo nombre.

Las funciones que tienen diferentes cantidades o tipos de parámetros (o ambos) se denominan funciones sobrecargadas. Por ejemplo:

int test() {}
int test(int a) {}
float test(double a) {}
int test(int a, double b) {}

Aquí, todas4son funciones sobrecargadas, porque los parámetros pasados a estas funciones son diferentes.

Tenga en cuenta que estas4la función no tiene tipos de retorno diferentes. Las funciones sobrecargadas pueden tener o no tener diferentes tipos de retorno, pero deben tener diferentes parámetros.

// código de error
int test(int a) {}
double test(int b){}

Incluso si los tipos de retorno son diferentes, pero el número y el tipo de datos de los parámetros pasados a estas dos funciones son los mismos. Por lo tanto, el compilador lanzará un error.

Ejemplo1: sobrecarga de funciones

#include <iostream>
using namespace std;
void display(int);
void display(float);
void display(int, float);
int main() {
    int a = 5;
    float b = 5.5;
    display(a);
    display(b);
    display(a, b);
    return 0;
}
void display(int var) {
    cout << "enteros: " << var << endl;
}
void display(float var) {
    cout << "números flotantes: " << var << endl;
}
void display(int var1, float var2) {
    cout << "enteros: " << var1;
    cout << " y números flotantes: " << var2;
}

resultado de salida

enteros: 5
números flotantes: 5.5
enteros: 5 y números flotantes:5.5

Aquí, la función display() se llama tres veces utilizando diferentes tipos o cantidades de parámetros.

todos estos tipos de funciones tienen el mismo tipo de retorno, pero esto no es obligatorio.

Ejemplo2: sobrecarga de funciones

//el programa calcula el valor absoluto
//es válido para enteros y números flotantes
#include <iostream>
using namespace std;
int absolute(int);
float absolute(float);
int main() {
    int a = -5;
    float b = 5.5;
    
    cout << "número " << a << " el valor absoluto= " << absolute(a) << endl;
    cout << "número " << b << " el valor absoluto= " << absolute(b);
    return 0;
}
int absolute(int var) {
     if (var < 0)
         var = -var;
    return var;
}
float absolute(float var) {
    if (var < 0.0)
        var = -var;
    return var;
}

resultado de salida

número -5 el valor absoluto= 5
número 5.5 el valor absoluto= 5.5

En el ejemplo anterior, se sobrecargan dos funciones absolute().

Ambas funciones utilizan un solo parámetro. Sin embargo, una función toma como parámetro un entero, mientras que la otra toma como parámetro un float.

Al llamar a la función absolute() con int como parámetro, se llama a esta función:

int absolute(int var) {
     if (var < 0)
         var = -var;
    return var;
}

Al llamar a la función absolute() con float como parámetro, se llama a esta función:

float absolute(float var) {
    if (var < 0.0)
        var = -var;
    return var;
}