La palabra clave virtual determina si una función miembro de una clase puede anularse en sus clases derivadas. Aquí hay un ejemplo simple para mostrar esto.
#include <iostream> using namespace std; class Car // Base class for C++ virtual function example { public: virtual void Create() // virtual function for C++ virtual function example { cout << "Parent class: Carn"; } }; class Sedan: public Car { public: void Create() { cout << "Derived class: Sedan - Overridden C++ virtual function"; } }; int main() { Car *x, *y; x = new Car(); x->Create(); y = new Sedan(); y->Create(); } |
Esto se produce como resultado de:
Clase para padres: Coche
Clase derivada: Sedan – Función virtual de C ++ anulada
Simplemente eliminando la palabra clave «virtual», el resultado sería:
Clase para padres: Coche
Clase para padres: Coche
Las funciones miembro no virtuales se resuelven en el momento de la compilación y se denomina enlace estático. Sin embargo, las funciones de miembros virtuales de c ++ se resuelven durante el tiempo de ejecución y se llaman como enlace dinámico.
Esto es diferente con Java. Aquí es una publicación sobre la comparación de Java y C ++.