2010-08-24 17 views
8

Duplicar posibles:
why do I need virtual table?Vtable en C++

¿Cuál es VTABLE en C++?
Tengo que saber que vtable es una tabla virtual que tiene una serie de punteros a funciones virtuales. ¿Hay algún artículo con implementación práctica? (Cualquier paso será apreciado)

+1

http://en.wikipedia.org/wiki/Virtual_method_table – DumbCoder

+0

http://stackoverflow.com/questions/2173493/virtual-table-c – DumbCoder

+3

A menos que planee escribir un compilador, esta información no es relevante para comprender C++ . –

Respuesta

13

Las tablas V (o tablas virtuales) son la forma en que la mayoría de las implementaciones C++ tienen polimorfismo. Para cada implementación concreta de una clase, hay una tabla de indicadores de función para todos los métodos virtuales. Un puntero a esta tabla (llamada tabla virtual) existe como un miembro de datos en todos los objetos. Cuando uno llama a un método virtual, buscamos la tabla v del objeto y llamamos al método de clase derivado apropiado.

+0

Si su clase base Foo tiene un método virtual, entonces su clase derivada Bar tendrá un vtable y el enlazador buscará eso (si falta, dice referencia indefinida a 'vtable para Bar ') – Will

4

C++-Lite-Faq es un buen punto de partida.

+0

Enlace roto, actualice o elimine. – donturner

+0

@donturner La votación en mi humilde opinión fue grosera. La búsqueda de Google en C++ Lite Faq le da a la página el segundo resultado. Podrías haberme salvado los problemas de otros al editar la respuesta tú mismo. Después de todo, la respuesta es 7 años. – phadej

+0

@phadej Las respuestas del enlace solo son desaprobadas por esta razón exacta: un recurso externo puede moverse o eliminarse o cambiarse y una respuesta aquí debe ser autosuficiente. – bolov

1

Por todo lo que vale, no es una terminología estándar de C++. Es solo un detalle de implementación utilizado por la implementación para implementar funciones virtuales/enlace dinámico

+6

No es la terminología del estándar, ni está estandarizado en absoluto, pero es un término bastante común. De todos modos, esto sería mejor como un comentario ya que no intenta responder la pregunta. – Potatoswatter

Cuestiones relacionadas