Documentos de Académico
Documentos de Profesional
Documentos de Cultura
class CL {
...
virtual void func1();
virtual void func2();
virtual void func3()
{ ... } // Ok. definición
inline
};
virtual void CL::func1()
{ ... } // Error!!
void CL::func2()
{ ... } // Ok.
definición offline
SINTAXIS
Para declarar que un método de una clase base es virtual, su prototipo se declara como siempre,
pero anteponiendo la palabra-clave virtual
Los prototipos de la versión de la clase base de una función virtual y todas las versiones de las clases derivadas
tienen que ser iguales. Si dos funciones con el mismo nombre tienen prototipos diferentes, C++ las considera como
funciones sobrecargadas, ignorando el mecanismo de las funciones virtuales.
No se puede tener constructores virtuales pero si podemos tener destructores virtuales
REGLAS
Aunque un puntero base puede apuntar a cualquier tipo de objeto derivado, lo inverso no es cierto. Es decir, no
podemos usar un puntero a una clase derivada para acceder a un objeto del tipo base.
Cuando un puntero base apunta a una clase derivada, al incremento o decrementarlo no apuntará al siguiente
objeto de la clase derivada. Es incrementado o decrementado en relación con su tipo de base. Por tanto, no
debemos usar este método para desplazar el puntero al objeto siguiente.
Una función virtual tiene que ser definida en una clase base, aunque no se use en la misma.
Si se define una función virtual en la clase base, no necesita ser redefinida obligatoriamente en la clase derivada.
En estos casos, las llamadas invocaran a la función base.
VI RT UAL Y NO
• https://docs.microsoft.com/es-es/cpp/cpp/virtual-functions?view=msvc-160
AS
• https://www.zator.com/Cpp/E4_11_8a.htm
• https://jonsegador.com/2013/06/funciones-virtuales-en-c/
• http://cidecame.uaeh.edu.mx/lcc/mapa/PROYECTO/libro15/36_funciones_virtuales.html