Anulación de funciones en C++ [Sobrecarga de funciones frente a anulación con ejemplos]

Publicado: 2021-05-25

La anulación de funciones en C++ es una característica que nos permite usar una función en la clase secundaria que ya está presente en su clase principal. La clase secundaria hereda todos los miembros de datos y las funciones miembro presentes en la clase principal. Si desea anular cualquier funcionalidad en la clase secundaria, puede implementar la anulación de funciones. La anulación de funciones significa crear una versión más nueva de la función de la clase principal en la clase secundaria.

Tabla de contenido

Funciones C++

Una función de C++ es un grupo de instrucciones que se unen para realizar una tarea. Cada programa tiene al menos una función main() y ciertos programas pueden tener funciones adicionales.

La declaración de la función transmite al compilador el nombre de la función, los parámetros y el tipo de retorno. Una definición de función determina el cuerpo de la función. La biblioteca estándar de C++ consta de muchas funciones integradas que el programa puede llamar. Una función puede ser un método, un procedimiento o una subrutina.

Definición de una función

La sintaxis general de una función C++ es:

return_type function_name(lista de parámetros) {

cuerpo funcional

}

Cualquier función de C++ consta de un encabezado de función y un cuerpo. Los componentes de una función C++ son:

Tipo de devolución: el tipo de devolución representa el tipo del valor de devolución de la función.

Nombre de la función : indica el nombre de la función. El nombre de la función junto con la lista de parámetros conforman la firma de la función.

Parámetros: un parámetro es un marcador de posición para el valor devuelto por la función. Cuando se llama a una función, se pasa un valor al parámetro que se llama parámetro real.

Cuerpo de la función : el cuerpo de la función constituye la lista de declaraciones que definen lo que hará la función.

Llamar a una función

Para usar una función en C++, debe invocar o llamar a la función. El control se transfiere a la función, la función luego realiza la tarea deseada y la declaración de retorno devuelve el control al programa principal.

Debe pasar los parámetros necesarios, incluido el nombre de la función, para llamar a una función. Si la función devuelve un valor, entonces el valor se puede almacenar. Hay algunas formas en las que se pueden pasar argumentos a una función mientras se llama. Los tipos de llamada son Llamada por valor, Llamada por referencia y Llamada por puntero.

Anulación de funciones en C++

Cuando una clase derivada o una clase secundaria define una función que ya está definida en la clase base o en la clase principal, se denomina reemplazo de funciones en C++. La anulación de funciones nos ayuda a lograr el polimorfismo en tiempo de ejecución. Permite a los programadores realizar la implementación específica de una función ya utilizada en la clase base.

Ejemplo:

Fuente

Estudie el ejemplo dado arriba. Aquí la clase principal es "Base" y la clase secundaria es "Derivada".

La salida del programa anterior será:

Función derivada

La función print() se declara en las clases Base y Derivado. Cuando llamamos a la función print() a través del objeto de clase Derived, "derived1", se invoca y ejecuta print() de la clase Derived anulando la misma función de la clase Base.

Funcionamiento del principio primordial de la función

Fuente

Como puede ver en la imagen de arriba, la función de la clase Base se anuló porque llamamos a la misma función a través del objeto de la clase Derivada.

Si llamamos a la función print() a través de un objeto de la clase Base, la función no se anulará. Por ejemplo:

//Llamar a la función de la clase Base

basebase1;

base1.imprimir(); // Salida: función base

La salida del código anterior será:

función base

Cómo acceder a funciones anuladas en C++

Debe usar el operador de resolución de alcance, “::” para acceder a la función anulada. Otra forma de acceder a la función anulada es usar el puntero de la clase base para apuntar a un objeto de la clase derivada y llamar a la función a través del puntero.

Ejemplo:

Fuente

La salida del programa anterior será:

Función derivada

función base

Funcionamiento del acceso de la función anulada

Fuente

Aquí la sentencia derivada 1.print() accede a la función print() de la clase Derivada y la sentencia derivada2.Base::print() accede a la función print() de la clase Base.

Llamar a una función invalidada de C++ desde la clase derivada

En este código, llamamos a la función anulada desde dentro de la propia clase Derivada.

Funcionamiento de la llamada de función anulada de la clase Derivada

Fuente

El comando Base::print() llama a la función anulada desde dentro de la clase Derivada.

Aprenda cursos de ingeniería de software en línea de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.

Sobrecarga de funciones frente a anulación de funciones

La sobrecarga de funciones se logra en tiempo de compilación y se puede realizar en la clase base y en la clase derivada. Ayuda a proporcionar múltiples definiciones de las funciones al cambiar la firma de las funciones, como el tipo de datos de los parámetros o los tipos de devolución.

La anulación de funciones se logra en tiempo de ejecución. Al invalidar, la clase base se redefine en la clase derivada con el mismo tipo de retorno y parámetros. Otras diferencias entre la anulación de funciones y la sobrecarga de funciones en C++ son:

1. Herencia

La anulación de funciones solo se puede usar con herencia de clases, mientras que la sobrecarga de funciones no requiere herencia de clases.

2. Firma de función

Las funciones sobrecargadas difieren en la firma, ya sea en el número de parámetros o en el tipo de parámetros. En la anulación de funciones, las firmas de funciones siguen siendo las mismas.

3. Alcance de la función

Las funciones anuladas varían en alcance, mientras que las funciones sobrecargadas tienen el mismo alcance.

4. Comportamiento de la función

La anulación de funciones es esencial cuando una función de clase derivada debe funcionar de manera diferente o con funcionalidad añadida que la función de clase base. La sobrecarga de funciones se implementa cuando las funciones con el mismo nombre deben tener diferentes comportamientos según los parámetros que se les pasan.

Si está interesado en obtener más información sobre el desarrollo de software de pila completa, consulte el programa Executive PG de upGrad & IIIT-B en desarrollo de software de pila completa, que está diseñado para profesionales que trabajan y ofrece más de 500 horas de capacitación rigurosa, más de 9 proyectos, y asignaciones, estado de ex alumnos de IIIT-B, proyectos finales prácticos y asistencia laboral con las mejores empresas.

¿Qué es la anulación de funciones?

La anulación de funciones es un concepto en la programación orientada a objetos que permite que una función dentro de una clase derivada anule una función en su clase base, pero con una firma diferente (y generalmente con una implementación diferente). Un aspecto clave de esto es que no es posible para la clase derivada "deshacer" los cambios en la clase base, o al menos no es posible sin editar más la clase base. Un uso común de la anulación de funciones es proporcionar una implementación predeterminada en la clase base y luego anularla con una implementación específica en la clase derivada.

¿Cuáles son las diferencias entre anular funciones y sobrecargar?

La anulación de funciones ocurre cuando crea una función con el mismo nombre que una función que ya existe en una clase base. Cuando esto suceda, la nueva función reemplazará a la función existente y se podrá usar en lugar de la función original. La sobrecarga ocurre cuando crea funciones con el mismo nombre pero diferentes parámetros. Cuando esto sucede, se llamará a la nueva función además de la función original, y ambas funciones se pueden usar en cualquier contexto sin ningún problema.

¿Qué es la herencia en C++?