Anulación de funciones de C ++

C Function Overriding



En este artículo, cubriremos la anulación de funciones en el lenguaje de programación C ++. C ++ admite polimorfismo en tiempo de ejecución.

En la función de anulación, la clase secundaria redefine la función que ya está definida en su clase principal.







Permite al programador proporcionar una funcionalidad específica de clase derivada (aunque esté definida en la clase base).



Ahora, veremos algunos ejemplos y entenderemos el concepto de anulación de funciones en C ++.



Ejemplo 1

He definido dos clases en el siguiente código de ejemplo: una clase base y una clase derivada. La clase base tiene una función miembro, es decir, disp (). Derived_Class se hereda de Base_Class. La función disp () está presente en Base_Class y luego redefinida en Derived_Class.





En la función main (), se crea un objeto de Derived_Class, es decir, d. Luego, llamamos a la función disp () en el objeto de la clase derivada, por lo que se invocará la función en la clase derivada. Aquí se ignora la versión de la clase base. Puede ver a continuación la función de salida como - disp () en la clase derivada.

#incluir

usando el espacio de nombres std;

// clase base
clase Base_Class
{
público:
vacíoaprovechar()
{
costo<< 'disp () función en la clase base.' <<endl;
}

};

//clase derivada
clase Derived_Class:público Base_Class
{
público:
vacíoaprovechar()
{
costo<< 'función disp () en la clase derivada' <<endl;
}
};

En tprincipal()
{
Derived_Class d;
D.aprovechar(); // función disp () en el objeto de clase derivada
regreso 0;
}



Ejemplo 2

En este ejemplo, veremos cómo llamar deliberadamente a la versión de clase base de la función a través del objeto de clase derivada. En la definición de función de clase derivada, usamos el operador de resolución de alcance [::] para llamar a la versión de clase base de la función.

#incluir

usando el espacio de nombres std;

clase Base_Class
{
público:
vacíoaprovechar()
{
costo<< 'disp () función en la clase base.' <<endl;
}

};

clase Derived_Class:público Base_Class
{
público:
vacíoaprovechar()
{
Clase_base::aprovechar(); // Llamar a la versión de clase base de disp ()
}
};

En tprincipal()
{
Derived_Class d;
D.aprovechar();
regreso 0;
}

Ejemplo-3

Este es otro ejemplo de anulación de funciones. En este ejemplo, hemos creado una clase padre - Animal y dos clases derivadas - Duck y Dog. La clase base, es decir, la clase Animal, tiene una función miembro sound ().

En la clase derivada / clase secundaria, es decir, Perro, hemos redefinido la misma función, es decir, sonido (), para anular su definición de clase base. De manera similar, en la otra clase derivada, es decir, pato, hemos redefinido la misma función, es decir, sonido ().

En la función main (), hemos creado el objeto perro de Perro y pato de Pato. Entonces, ahora cuando llamamos a la función sound () para perro y pato, la versión de clase derivada de la función sound () llamará. Puede ver la salida del programa como se muestra a continuación. Entonces, con la ayuda de la función que reemplaza, podemos invocar la función derivada específica de la clase.

#incluir

usando el espacio de nombres std;

clase animal
{
público:
vacíosonido()
{
costo<< '¡Sonido animal!' <<endl;
}

};

// Clase derivada - Clase de perro
perro de clase:animal público
{
público:
vacíosonido()
{
costo<< Sonido de perro, ladrido. <<endl;
}
};

// Clase derivada - Clase pato
clase pato:animal público
{
público:
vacíosonido()
{
costo<< Sonido de pato, graznido. <<endl;
}
};


En tprincipal()
{
Perro perro;
Pato pato;

perro.sonido(); // sonido () de perro
Pato.sonido(); // sonido () de pato

regreso 0;
}

Conclusión

En este artículo, he explicado la anulación de funciones en C++ . El lenguaje C ++ admite polimorfismo en tiempo de ejecución. La anulación de funciones ayuda a lograr el polimorfismo en tiempo de ejecución en C ++. Este artículo analizó el concepto de anulación de funciones y cómo lograr el polimorfismo en tiempo de ejecución mediante la anulación de funciones.