Vinculación dinámica en C++: explicación, funciones e implementación
Publicado: 2021-02-04Tabla de contenido
Introducción
Este artículo lo guiará a través del funcionamiento del enlace dinámico en C++ . Se espera que tenga un conocimiento básico del funcionamiento de la herencia y el enlace estático en C++. Esto se debe a que algunas limitaciones del enlace estático se eliminan mediante el enlace dinámico. Le mostraremos, junto con códigos apropiados y simples, cómo es útil el enlace dinámico.
¿Qué es la vinculación dinámica?
Por enlace, generalmente nos referimos a vincular un objeto con otro. En términos de lenguajes de programación, el enlace no es muy diferente. Es la vinculación de una definición de función y una llamada de función. Pero, ¿por qué 'dinámico'? En palabras simples, el enlace dinámico solo retrasa la elección o selección de qué función ejecutar hasta su tiempo de ejecución. Usando el enlace dinámico en C++ , elegimos qué función podemos ejecutar en función del tipo subyacente del objeto.
Esta flexibilidad no se concedió a los programadores con enlace estático. El enlace estático solía ocurrir en tiempo de compilación y no en tiempo de ejecución. Además, el enlace estático vinculó la llamada y la definición de la función durante el tiempo de compilación, mientras que, como ahora sabe, el enlace dinámico no lo hace hasta el tiempo de ejecución.
El enlace dinámico nos permite ignorar las diferencias de tipos al brindarnos la flexibilidad de elegir qué tipo de función necesitamos en ese instante de tiempo de ejecución. Al examinar esta declaración, podemos entender que el enlace dinámico nos permite manejar diferentes objetos usando un solo nombre de función. Esto reduce la complejidad del código y también permite que el programador tenga un tiempo más fácil durante la depuración.
Funciones virtuales
Hemos hablado mucho sobre el enlace dinámico en C++ . Pero, ¿cómo proceder con eso? Para implementar el enlace dinámico en su código C++, necesita usar 'funciones virtuales'. Entonces, ¿qué son las funciones virtuales?
Este artículo no profundizará en las funciones virtuales, ya que son lo suficientemente importantes como para un artículo separado. Pero se le proporcionará suficiente información sobre las funciones virtuales para comprender claramente el enlace dinámico.

Las funciones virtuales son funciones miembro especiales a las que las llamadas realizadas a través de un puntero (o referencia) se resuelven en tiempo de ejecución, en función del tipo de objeto con el puntero. En palabras simples, si define una función virtual en una clase base, puede anular la función en las clases derivadas.
Este es el poder de las funciones virtuales. En C++, define una función virtual usando la palabra clave 'virtual' al comienzo de la definición de la función. Es posible que no tenga que repetir la palabra clave virtual para cada clase derivada de una clase base porque una vez que una función se declara 'virtual', seguirá siendo 'virtual' en todas las clases derivadas.
Implementación de C++
Eso es sobre funciones virtuales. Ahora veamos un programa para comprender el enlace dinámico en C++ :
Programa #1 :
Vemos dos clases: la clase A es la clase 'base', mientras que la clase B es la 'clase derivada'. Dentro de ambas clases, hay una función con el mismo nombre 'display'. En la clase padre, hay otra función llamada final_print() que llama a la función display(). En la función main(), creamos dos objetos diferentes para dos clases diferentes, llamando a la misma función display().

Veamos la salida del programa anterior.
Salida para el Programa #1:
Como se esperaba, la salida ejecuta la función display() de la clase base dos veces, tal como se define en el momento de la compilación (enlace estático). Pero este no es el resultado que queríamos.
Ahora, para convertir el código anterior en uno de enlace dinámico, necesitamos usar funciones virtuales. Veamos cómo hacerlo.
Programa #2:
Simplemente agregamos la palabra clave 'virtual' para nuestras dos funciones de visualización () en Clase A y Clase B, convirtiéndolas así en funciones virtuales. Ese es el único cambio necesario. Al igual que antes, llamamos a la misma función final_print() usando dos objetos diferentes. Veamos qué salida obtenemos ahora.

Salida para el Programa #2 :
Este es el resultado que queríamos y lo obtuvimos usando el enlace dinámico de las funciones.
Aprenda cursos 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.
Conclusión
En este artículo, analizamos el concepto de vinculación dinámica en C++ . Para resumir, el enlace dinámico nos permite flexibilidad al llamar a una sola función para manejar diferentes objetos. Como es evidente en nuestro código, llamamos a la misma función display() haciendo dos objetos diferentes para darnos dos resultados diferentes. Esto es posible porque el enlace dinámico ocurre en tiempo de ejecución, a diferencia del enlace estático que ocurre en tiempo de compilación.
Si está interesado en obtener más información sobre el desarrollo 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 exalumno de IIIT-B, proyectos finales prácticos y asistencia laboral con las mejores empresas.
¿Qué es el lenguaje de programación C++?
C++ es un lenguaje de programación de propósito general. Es uno de los lenguajes de programación más utilizados en el mundo. C++ es una versión mejorada del lenguaje C y proporciona funciones que facilitan la programación orientada a objetos. C++ es un lenguaje de programación de propósito general, mientras que C es un lenguaje de programación de propósito especial. C ++ se creó como una extensión de C para admitir la programación orientada a objetos y se utiliza para desarrollar aplicaciones de escritorio, aplicaciones para dispositivos móviles, sistemas integrados y en tiempo real, y aplicaciones y servicios web. C++ es un lenguaje de programación imperativo, procedimental, multiparadigma, compilado y de propósito general. Admite programación estructurada, programación orientada a objetos y programación genérica. Tiene un sistema de tipo dinámico y gestión de memoria explícita.
¿Qué es la programación orientada a objetos?
OOP es la forma de crear código reutilizable, fácil de mantener y legible. En resumen, OOP es un paradigma de programación que se basa en diseñar el software en torno a los objetos del mundo real. Por ejemplo, en Java, si desea diseñar un software que trate con libros, cree una clase llamada Libro y luego cree instancias separadas (objetos) de esta clase que representan un solo libro. Lo mismo se aplica a otras clases que necesita crear en el software.
¿Qué es el enlace dinámico en C++?
El enlace dinámico asocia el significado de un identificador en un texto de programa con la definición de ese identificador que se encuentra en tiempo de ejecución. Esta asociación de significados se llama vinculación. Es el principio fundamental de la programación orientada a objetos. Los identificadores enlazados dinámicamente son las ramas y hojas de la jerarquía de clases orientada a objetos. Son dinámicos porque se resuelven en tiempo de ejecución, no en tiempo de compilación. Las ramas y hojas de la jerarquía de clases orientada a objetos son dinámicas porque están ligadas a las clases derivadas de ellas.