Programa en C ++ – El polimorfismo aplicación utilizando funciones virtuales.

En este programa vamos a aprender cómo implementar polimorfismo con la herencia usando funciones virtuales en lenguaje de programación C ++?

Si hay mismas funciones miembro de la base y clases derivadas, los objetos de clases derivadas se llaman función miembro de Base class.

Veamos el ejemplo (sin el uso de funciones virtuales)

Consideremos el siguiente ejemplo:

#include <iostream>
using namespace std;
class Base{
public:
void disp(){
cout<<"disp function of Base class"<<endl;
}
};
class Derived1: public Base{
    public:
void disp(){
cout<<"disp function of Derived1 class"<<endl;
}
};
class Derived2: public Base{
    public:
void disp(){
cout<<"disp function of Derived2 class"<<endl;
}
};
int main(){
Base *b;
Derived1 D1;
Derived2 D2;
b= &D1;
b->disp();
b= &D2;
b->disp();
return 0;
}

salida

    disp function of Base class
disp function of Base class

programa en C ++ (Fragmento de código) – Implementación de polimorfismo usando funciones virtuales

cómo acceder a las funciones deriva class ‘s (con función virtual)?

Hay tres cosas, que tiene que hacer aplicar un polimorfismo usando las funciones miembro virtuales, y los pasos son :

  • Uso virtuales palabra clave con la función de miembro de base class ‘s
  • Crear un puntero de Base class, la dirección asignada del Derivado class ‘función miembro s
  • funciones miembro de llamadas con el class Base’ s puntero

Consideremos el siguiente ejemplo:

#include <iostream>
using namespace std;
class Base{
public:
virtual void disp(){
cout<<"disp function of Base class"<<endl;
}
};
class Derived1: public Base{
    public:
void disp(){
cout<<"disp function of Derived1 class"<<endl;
}
};
class Derived2: public Base{
    public:
void disp(){
cout<<"disp function of Derived2 class"<<endl;
}
};
int main(){
Base *b;
Derived1 D1;
Derived2 D2;
b= &D1;
b->disp();
b= &D2;
b->disp();
return 0;
}

salida

    disp function of Derived1 class
disp function of Derived2 class


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *