multiple - ¿Cómo funciona la invocación de método virtual en C++?
virtual class c++ (4)
¿Cómo funciona la Invocación de Método Virtual en C ++?
A través de tablas virtuales.
Lea este artículo, http://en.wikipedia.org/wiki/Virtual_table .
Podría explicarlo aquí, pero la wikipedia hace un mejor trabajo que yo.
Cada clase con al menos un método virtual tiene su tabla virtual - tabla de punteros a funciones que son los métodos de esa clase.
Se usa ampliamente en COM.
El estándar de C ++ no especifica cómo se debe implementar el mecanismo de función virtual.
Dicho esto, creo que todos los compiladores de C ++ actuales usan tablas virtuales.
La forma común de hacer esto para las clases que contienen al menos una función virtual para tener un puntero oculto a una tabla llamada virtual, donde las direcciones de las funciones virtuales para una clase específica se ingresan en orden específico del compilador.
Cada constructor establecerá este puntero oculto en la tabla virtual de la clase a la que pertenece.
Con VTables y punteros de función. El puntero de la función de las funciones virtuales se enumerará en VTable
MFC usa el Mapa de mensajes en lugar de la función Virtual, lo que reduce la limitación de tamaño. Si utilizamos varias funciones virtuales, VTable terminará con un gran tamaño.