Skip to content

Sobrecarga

En C++ existe el concepto de sobrecarga de un metodo o funcion, donde puedes crear muchas funciones con el mismo nombre, pero lo que cambia son el numero y/o el tipo de parametros

cpp
int equal(int a, int b)
{
    if (a == b)
        return (1);
    return (0);
}

int equal(float a, float b)
{
    if (a == b)
        return (1);
    return (0);
}

int equal(bool a, bool b)
{
    if (a == b)
        return (1);
    return (0);
}

int main()
{
    int one = 2;
    int two = 3;
    float three = 2.4567;
    float four = 2.4657;
    bool five = true;
    bool six = true

    std::cout << "Int equal " << equal(one, two) << std::endl;
    std::cout << "Float equal " << equal(three, four) << std::endl;
    std::cout << "Bool equal " << equal(five, six) << std::endl;
}

Aquí se puede ver que hay una funcion equal que mira si dos variables tienen el mismo valor, pero con tipos de parametros diferentes. En el primero output el compilador ve que hay dos parametros de tipo int, entonces llama a la función de arriba. En el secundo llama a la secunda y en el tercero la tercera, todo en automatico.

Esto es muy comodo y se utiliza mucho sobretodo con los constructores y destructores de clases, que pueden aceptar diferentes tipos y numeros de parametros a la creacion de un objecto:

cpp
class MiClase {
public:
    // Constructor por defecto
    MiClase() {
        std::cout << "Se ha llamado al constructor." << std::endl;
    }

    // Constructor con parámetros
    MiClase(int x, int y) {
        std::cout << "x=" << x << ", y=" << y << std::endl;
    }
};