He leído a mucha gente escribiendo "existe una tabla virtual para una clase que tiene una función virtual declarada en ella".Tabla virtual C++
Mi pregunta es, ¿existe un vtable solo para una clase que tiene una función virtual o también existe para las clases derivadas de esa clase.
por ejemplo
class Base{
public:
virtual void print(){cout<<"Base Print\n";}
};
class Derived:public Base{
public:
void print(){cout<<"Derived print\n";}
};
//From main.cpp
Base* b = new Derived;
b->print();
Pregunta: Si no hubiera habido vtable para la clase derivada "de impresión derivada", entonces la salida no habría sido. Por lo que IMO existe un vtable para cualquier clase que tenga la función virtual declarada y también en las clases heredadas de esa clase. Es esto correcto ?
Para completar el experimento, cree la clase derivada2 que hereda de derivada y también sobrescribe la impresión. Impresión de llamada en una instancia de este tipo mediante un puntero a la base ... – VoidPointer
Más información sobre el Vtable @ a continuación Enlace: http://www.learncpp.com/cpp-tutorial/125-the-virtual-table/ –