Cómo usar anular en c++?

Cómo usar anular en c++?

En C ++, si existe una función con el mismo nombre tanto en la base base como en la clase derivada, la función de clase derivada anula la función de clase base. Esto muestra que si se llama a una función con el objeto de la clase derivada, en lugar de la función de clase base, la función de clase derivada se ejecutará. Esto es conocido como función anular en c++, y permite que las clases derivadas modifiquen el comportamiento de la función de clase base para satisfacer sus necesidades específicas. Primordial es importante ya que permite la reutilización del código, lo que facilita a los programadores modificar el código y eliminar la necesidad de escribir el código desde cero.

En este artículo, mostraremos cómo usar el "anular" En el lenguaje de programación C ++.

Contenido para este artículo:

  • Cómo usar la anulación en c++?
  • Ejemplo 1: función de la función C ++
  • Ejemplo 2: función anulada de acceso a C ++ a la clase base
  • Ejemplo 3: Función anulada de llamadas C ++ de la clase derivada
  • Ejemplo 4: Función anulada de llamadas C ++ usando puntero
  • Diferencia entre anular y sobrecargar en c++
  • Conclusión

Cómo usar la anulación en c++

Usar 'anular' En C ++, simplemente necesitamos agregarlo después de la declaración de función en la clase derivada. Aquí hay un ejemplo:

Ejemplo 1: función de la función C ++

El código proporcionado demuestra la función de la función en C++.

#incluir
usando el espacio de nombres STD;
Padre de clase
público:
void linuxhint_print ()

cout << "This is Base Function" << endl;

;
Class Child: Public Parent
público:
void linuxhint_print ()

cout << "This is Derived Function" << endl;

;
int main ()

Niño niño_derivado;
Infantil_ derivado.Linuxhint_print ();
regresar 0;

Tenemos una clase principal con una función nombrada Linuxhint_print () que imprime un mensaje en la consola. Luego creamos una clase infantil que hereda públicamente de la clase principal y anula el Linuxhint_print () función con su propia implementación que también imprime un mensaje en la consola.

En la función main (), se crea y se llama un objeto de la clase infantil como Linuxhint_print () función. Dado que la clase infantil anula el Linuxhint_print () función de la clase principal, la salida será Esta es la función derivada en lugar de Esta es la función base.

Ejemplo 2: función anulada de acceso a C ++ a la clase base

A veces, es posible que deseemos llamar a la función anulada en la clase base de la clase derivada. Podemos hacer esto usando el operador de resolución de alcance '::'. Aquí hay un ejemplo:

#incluir
usando el espacio de nombres STD;
base de clases
público:
test virtual void ()
cout << "This is Base Class" << endl;

;
clase derivada: base pública
público:
test void ()
Base :: test ();
cout << "This is Derived Class" << endl;

;
int main ()
Derivado derivedobj;
derivado.prueba();
regresar 0;

El código anterior define dos clases Base y Derivado, donde la clase derivada hereda de la clase base. Ambas clases tienen una función llamada Test () que muestra el mensaje en la consola. La función test () en la clase base se declara como virtual, lo que indica que puede ser anulada por clases derivadas.

En la clase derivada, anulamos la función test () y llamamos a la función test () de la clase base utilizando Base :: test () imprimir Esto es base Clase a la consola. Luego imprimimos Esta es la clase derivada a la consola después de llamar a la función de prueba de la clase base ().

Si creamos un objeto de la clase derivada y llamamos a su función test (), la salida será Esto es base Clase seguido por Esta es la clase derivada, indicando que la clase derivada ha anulado la función de prueba () de la clase base y ha agregado su propio comportamiento.

Ejemplo 3: Función anulada de llamadas C ++ de la clase derivada

También podemos llamar a la función anulada en la clase base desde fuera de la jerarquía de clases usando un puntero a la clase base. Aquí hay un ejemplo:

Este código demuestra la función de la función en C ++ utilizando la herencia.

#incluir
usando el espacio de nombres STD;
base de clases
público:
test void ()
cout << "This is Base Function" << endl;

;
clase derivada: base pública
público:
test void ()
cout << "This is Derived Function" << endl;
// Función anulada de llamadas
Base :: test ();

;
int main ()
Derivado derivado1;
derivado1.prueba();
regresar 0;

Hay dos clases definidas, base y derivadas. Aquí en el código anterior, la clase derivada se deriva de la base con la ayuda del especificador de herencia pública.

Ambas clases tienen una función miembro nombrada prueba(), que muestra un mensaje en la consola. Sin embargo, en la clase derivada, la función test () se anula para imprimir un mensaje diferente y también llamar a la función test () de la clase base utilizando el operador de resolución de alcance (: :).

La función main () tiene un objeto de clase derivada, y su función test () se llama. Cuando se llama a la función test () en el objeto Derived1, se imprime Esta es la función derivada a la consola y luego llama a la función test () de la clase base, que imprime Esta es la función base a la consola.

Ejemplo 4: Función anulada de llamadas C ++ usando puntero

También podemos llamar a la función anulada en la clase base utilizando un puntero a la clase derivada. Aquí hay un ejemplo:

#incluir
usando el espacio de nombres STD;
base de clases
público:
test void ()
cout << "This is Base Function" << endl;

;
clase derivada: base pública
público:
test void ()
cout << "This is Derived Function" << endl;

;
int main ()
Derivado derivado1;
// puntero a derivado1
Base* ptr = &derived1;
// Función de clase base de llamada
ptr-> test ();
regresar 0;

En el programa anterior, se definen, se derivan dos clases. Ambas clases tienen una función miembro llamada Test () que muestra un mensaje en la consola.

En el principal() Función, se crea un objeto de la clase derivada y se crea e inicializa un puntero PTR de la base de tipo.

La función test () se llama en el PTR puntero, que es de base de tipo. La función test () en la clase base puede anularse en cualquier clase derivada utilizando el puntero.

Aquí cuando se llama a la función test () en el PTR puntero, se imprime Esta es la función base a la consola en lugar de Esta es la función derivada.

Diferencia entre anular y sobrecargar en c++

Anular y sobrecargar son dos conceptos importantes en la programación orientada a objetos. En C ++, se utilizan para proporcionar un comportamiento polimórfico, lo que permite que diferentes objetos respondan de manera diferente al mismo mensaje.

Sobrecarga está creando múltiples funciones con el mismo nombre pero tiene diferentes parámetros o tipos de argumentos.

Primordial, Por otro lado, se refiere al proceso de redefinición de una función en una clase derivada que contiene el mismo nombre que una función de clase base.

El diferencia clave Entre la anulación y la sobrecarga es que la prima implica la redefinición de una función en una clase derivada con el mismo nombre y firma que en la clase base. En contraste, la sobrecarga implica crear múltiples tareas con el mismo nombre, pero diferentes parámetros o tipos de argumentos.

Conclusión

El 'anular' en C ++ puede garantizar que la función en la clase derivada esté anulando la función virtual de la clase base. Este artículo analiza diferentes formas de anular una función. En C ++, la función se puede anular en ambos sentidos, desde la base hasta la derivada o viceversa, también podemos definir un puntero a una clase base y anular una función derivada en él.