¿Tiene C++ una implementación adecuada de la interfaz que no utiliza vtable?¿C++ tiene una implementación de polimorfismo estático de interfaz que no usa vtable?
por ejemplo
class BaseInterface{
public:
virtual void func() const = 0;
}
class BaseInterfaceImpl:public BaseInterface{
public:
void func(){ std::cout<<"called."<<endl; }
}
BaseInterface* obj = new BaseInterfaceImpl();
obj->func();
la llamada a func en la última línea va a VTABLE para encontrar el PTR func de BaseInterfaceImpl :: func, pero ¿hay alguna manera de C++ para hacerlo directamente como el BaseInterfaceImpl no es subclassed de cualquier otra clase además de la clase de interfaz pura BaseInterface?
Gracias. Gil.
¿Por qué te importa si pasa por el vtable? – Thomas
porque estoy trabajando en un proyecto donde la velocidad sí importa. Además, creo que Vtable es una gran solución para el polimorfismo completo oo pero una exageración para implementar 'interfaz' y espero que exista alguna solución más ligera. – gilbertc
@gilbertc: Creo que hay un malentendido aquí. * Cualquier implementación * "adecuada" del concepto de interfaces pasará por algo así como un vtable. De lo contrario, el polimorfismo dinámico sería imposible. – Thomas