En C ++, si una clase derivada redefine el método miembro de la clase base, todos los métodos de la clase base con el mismo nombre quedan ocultos en la clase derivada.
Por ejemplo, el siguiente programa no se compila. En el siguiente programa, Derived redefine el método de Base fun () y esto oculta la diversión (int i).

#include<iostream>

 

using namespace std;

 

class Base

{

public:

    int fun()

    {

        cout<<"Base::fun() called";

    }

    int fun(int i)

    {

        cout<<"Base::fun(int i) called";

    }

};

 

class Derived: public Base

{

public:

    int fun() 

    {

        cout<<"Derived::fun() called";

    }

};

 

int main()

{

    Derived d;

    d.fun(5); 

    return 0;

}

Incluso si la firma del método de la clase derivada es diferente, todos los métodos sobrecargados en la clase base se ocultan. Por ejemplo, en el siguiente programa, Derived :: fun (char) oculta tanto Base :: fun () como Base :: fun (int).

#include<iostream>

 

using namespace std;

 

class Base

{

public:

    int fun()

    {

        cout<<"Base::fun() called";

    }

    int fun(int i)

    {

        cout<<"Base::fun(int i) called";

    }

};

 

class Derived: public Base

{

public:

    int fun(char c) 

    {

        cout<<"Derived::fun(char c) called";

    }

};

 

int main()

{

    Derived d;

    d.fun(); 

    return 0;

}

Tenga en cuenta que los hechos anteriores son ciertos tanto para los métodos estáticos como para los no estáticos.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema discutido anteriormente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *