Introducción a la palabra clave virtual en C ++

Una palabra clave virtual en C ++ se utiliza para crear una función virtual en C ++. La función virtual es la función de la clase principal que queremos redefinir en la clase secundaria. La función virtual se declara utilizando la palabra clave virtual. Cuando definimos la función virtual, la palabra clave virtual debe proceder en la declaración de la función. La palabra clave virtual le dice al compilador que realice un enlace tardío o un enlace dinámico en la función.

El puntero único es necesario para referirse a todos los objetos de diferentes clases. Por lo tanto, el puntero se crea en la superclase para referir todos los objetos de la clase derivada y luego el puntero de la superclase contiene la dirección del objeto de la clase derivada que siempre ejecuta la función de superclase. Entonces, para resolver esto, usamos la función virtual. Entonces, cuando la función virtual se crea en la superclase, el compilador de C ++ identifica qué función se ejecutará en el tiempo de ejecución y la identificación de la función se basa en el tipo de objeto que señala el puntero de la superclase.

Función virtual

Las funciones virtuales de la sintaxis se dan a continuación:

Sintaxis

class name_class
(
public :
virtual return fun(arg1, arg2, ..)
(
//code inside the function
)
)

Al igual que en la sintaxis, fun () declara mediante la palabra clave virtual, lo que significa que la clase secundaria puede redefinir los mismos métodos.

Programa 1:

#include
using namespace std;
class A
(
public:
void disp()
(
cout << " Message from the class A\n ";
)
);
class B :public A
(
public:
void disp()
(
cout << "Message from the class B\n";
)
);
int main()
(
A* obj1; // super class pointer
B obj2; // child class object
obj1 = &obj2;
obj1-> disp(); // Late Binding Occurs
)

Salida:

En el programa anterior, la superclase A tiene la función disp (), que se reescribe en la clase derivada B. En la función principal, el método disp () está llamando al objeto obj1 (que es un enlace dinámico o un enlace tardío). es un proceso en el cual, qué función específica ejecutar se decide en el tiempo de ejecución) y se ejecuta la función disp () de la clase A.

Programa 2:

#include
using namespace std;
class A
(
public:
virtual void disp()
(
cout << " Message from the class A \n ";
)
);
class B :public A
(
public:
void disp()
(
cout << "Message from the class B\n";
)
);
int main()
(
A* obj1; // super class pointer
B obj2; // child class object
obj1 = &obj2;
obj1-> disp(); // Dynamic Binding Ocuurs
)

Salida:

El código de programa anterior es la alteración del programa 1, la función disp () se define con la palabra clave virtual y ahora cuando obj1 llama a la función disp (), se ejecuta la función disp () de la clase secundaria B.

Programa 3:

#include
using namespace std;
class A
(
public:
virtual void disp()
(
cout << " Message from the class A\n ";
)
);
class B :public A
(
public:
virtual void disp()
(
cout << "Message from the class B\n";
)
);
int main()
(
A* obj1; // super class pointer
B obj2; // child class object
obj1 = &obj2;
obj1-> disp(); // Dynamic Binding Ocuurs
)

Salida:

El código de programa anterior es la alteración del programa 2, la función disp () que también se redefine con la palabra clave virtual en la clase B y ahora cuando el obj1 llama a la función disp (), la función disp () de la clase secundaria B es ejecutado.

A continuación, escribimos el programa para la función virtual pura. La función virtual pura es una función para la cual don no tenía implementaciones. La función virtual pura también se llama función virtual abstracta. La declaración de función virtual pura asigna 0, como se muestra en el siguiente código:

Programa 4:

#include
using namespace std;
class A
(
public:
virtual void disp()=0;
);
class B :public A
(
public:
void disp()
(
cout << "Message from the class B\n";
)
);
int main()
(
A* obj1; // super class pointer
B obj2; // child class object
obj1 = &obj2;
obj1-> disp(); // Dynamic Binding Ocuurs
)

Salida:

Ventajas de la palabra clave virtual en C ++

  • Las funciones virtuales se utilizan para lograr el polimorfismo de tiempo de ejecución.
  • Si una clase se deriva de una clase que tiene una función virtual, la definición de la función se puede redefinir en la clase derivada.

Reglas de palabra clave virtual en C ++

  • La palabra clave virtual en uso de C ++ en la declaración de función.
  • Las funciones virtuales deben ser miembros de la clase.
  • La función virtual a la que se accede mediante punteros de objeto.
  • La función virtual no puede declararse como estática.
  • La función virtual puede ser amigos de otra clase.
  • Si la función virtual no se usa en la superclase, entonces también podemos definirla en la superclase.
  • La firma de una función virtual de la superclase y las clases secundarias debe ser la misma, llamada como anulación de función, de lo contrario, si las dos funciones con el mismo nombre pero con una firma diferente, se consideran las funciones sobrecargadas en C ++.
  • Podemos tener un destructor virtual pero no un constructor virtual.

Conclusión

  • Una palabra clave virtual en C ++ se utiliza para crear una función virtual en C ++.
  • La función virtual es la función de la clase principal que queremos redefinir en la clase secundaria.
  • El puntero único es necesario para referirse a todos los objetos de diferentes clases.
  • El puntero de superclase contiene la dirección del objeto de la clase derivada que siempre ejecuta la función de superclase.
  • Las funciones virtuales deben ser miembros de la clase, deben ser miembros de la clase, no se pueden declarar como estáticas, acceder a ellas mediante punteros de objeto.
  • La firma de una función virtual de la superclase y las clases secundarias debe ser la misma, llamada como anulación de función, de lo contrario, si las dos funciones con el mismo nombre pero con una firma diferente, se consideran las funciones sobrecargadas en C ++.

Artículos recomendados

Esta es una guía para la palabra clave virtual en C ++. Aquí discutimos la Introducción y las ventajas de la palabra clave virtual en C ++ junto con su sintaxis de la función virtual. También puede consultar nuestros otros artículos sugeridos para obtener más información:

  1. Método de anulación en C #
  2. Herencia en C #
  3. Comandos C #
  4. Comandos Java
  5. Anulación en Java
  6. Polimorfismo en Java
  7. Las 11 características y ventajas principales de C ++