La vinculación se refiere al proceso de convertir identificadores (como nombres de variables y de rendimiento) en direcciones. El enlace se realiza para cada variable y función. Para las funciones, significa hacer coincidir la llamada con la definición de función correcta por parte del compilador. Tiene lugar en tiempo de compilación o en tiempo de ejecución.
Early Binding (polimorfismo de tiempo en tiempo de compilación) Como su nombre lo indica, el compilador (o enlazador) asocia directamente una dirección a la llamada de función. Reemplaza la llamada con una instrucción en lenguaje de máquina que le dice al mainframe que salte a la dirección de la función.
Por defecto, el enlace anticipado ocurre en C++. El enlace tardío (discutido a continuación) se logra con la ayuda de la palabra clave virtual )
// CPP Program to illustrate early binding. // Any normal function call (without virtual) // is binded early. Here we have taken base // and derived class example so that readers // can easily compare and see difference in // outputs. #include<iostream> using namespace std; class Base { public: void show() { cout<<" In Base \n"; } }; class Derived: public Base { public: void show() { cout<<"In Derived \n"; } }; int main(void) { Base *bp = new Derived; // The function call decided at // compile time (compiler sees type // of pointer and calls base class // function. bp->show(); return 0; }
Producción:
In Base
Enlace tardío: (polimorfismo en tiempo de ejecución) En esto, el compilador agrega código que identifica el tipo de objeto en tiempo de ejecución y luego hace coincidir la llamada con la definición de función correcta (consulte esto para obtener más detalles). Esto se puede lograr declarando una función virtual .
// CPP Program to illustrate late binding #include<iostream> using namespace std; class Base { public: virtual void show() { cout<<" In Base \n"; } }; class Derived: public Base { public: void show() { cout<<"In Derived \n"; } }; int main(void) { Base *bp = new Derived; bp->show(); // RUN-TIME POLYMORPHISM return 0; }
Producción:
In Derived
Publicación traducida automáticamente
Artículo escrito por Himanshi_Singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA