anular identificador en C++

La anulación de funciones es una redefinición de la función de la clase base en su clase derivada con la misma firma, es decir, el tipo de retorno y los parámetros. 
Pero puede haber situaciones en las que un programador cometa un error al anular esa función. Entonces, para realizar un seguimiento de dicho error, C++ 11 ha creado el identificador de anulación . Si el compilador se encuentra con este identificador, entiende que se trata de una versión anulada de la misma clase. Hará que el compilador verifique la clase base para ver si hay una función virtual con esta firma exacta. Y si no lo hay, el compilador mostrará un error. 

Las intenciones del programador pueden quedar claras para el compilador mediante anulación. Si el identificador de anulación se usa con una función miembro, el compilador se asegura de que la función miembro exista en la clase base y también restringe el programa para compilar de otra manera.

Entendamos a través del siguiente ejemplo: 

CPP

// A CPP program without override keyword, here
// programmer makes a mistake and it is not caught
#include <iostream>
using namespace std;
 
class Base {
public:
    // user wants to override this in
    // the derived class
    virtual void func() { cout << "I am in base" << endl; }
};
 
class derived : public Base {
public:
    // did a silly mistake by putting
    // an argument "int a"
    void func(int a)
    {
        cout << "I am in derived class" << endl;
    }
};
 
// Driver code
int main()
{
    Base b;
    derived d;
    cout << "Compiled successfully" << endl;
    return 0;
}
Producción

Compiled successfully

Explicación : aquí, el usuario pretendía anular la función func() en la clase derivada, pero cometió un error tonto y redefinió la función con una firma diferente. Lo cual no fue detectado por el compilador. Sin embargo, el programa no es realmente lo que el usuario quería. Por lo tanto, para deshacerse de errores tan tontos y estar seguros, se puede usar el identificador de anulación. 
A continuación se muestra un ejemplo de C++ para mostrar el uso del identificador de anulación en C++.

CPP

// A CPP program that uses override keyword so
// that any difference in function signature is
// caught during compilation
#include <iostream>
using namespace std;
 
class Base {
public:
    // user wants to override this in
    // the derived class
    virtual void func() { cout << "I am in base" << endl; }
};
 
class derived : public Base {
public:
    // did a silly mistake by putting
    // an argument "int a"
    void func(int a) override
    {
        cout << "I am in derived class" << endl;
    }
};
 
int main()
{
    Base b;
    derived d;
    cout << "Compiled successfully" << endl;
    return 0;
}

Salida (Error)

prog.cpp:17:7: error: 'void derived::func(int)'
marked 'override', but does not override
  void func(int a) override 
       ^

En resumen, cumple las siguientes funciones. Ayuda a comprobar si: 

  • Hay un método con el mismo nombre en la clase padre.
  • El método en la clase principal se declara como «virtual», lo que significa que estaba destinado a ser reescrito.
  • El método de la clase principal tiene la misma firma que el método de la subclase.

Este artículo es una contribución de MAZHAR IMAM KHAN . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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