Tag: vtable

为什么派生类没有vtable指针而是使用基类的vtable?

我感兴趣的是在纯C中实现虚函数。这里是一个实现的例子 。 然后通过指向基类的虚函数表的指针来实现派生类。 为什么派生类没有vtable指针而是使用基类的vtable。 也许是因为它们是相同的偏移量? void myClassDerived_ctor(struct myClassDerived *this) { myClassBase_ctor(&this->base); this->base.vtable = (void*)&myClassDerived_vtable + sizeof(void*); // used vtable of the base class }

在C ++中vtable查找的性能损失

我正在评估将一个实时软件从C /汇编语言重写为C ++ /汇编语言(由于与代码问题无关的原因,在汇编时绝对需要这样做)。 中断带有3 kHz频率,对于每个中断,大约200个不同的事情将按顺序完成。 处理器以300 MHz运行,为我们提供100,000个周期来完成这项工作。 这已在C中用函数指针数组求解: // Each function does a different thing, all take one parameter being a pointer // to a struct, each struct also being different. void (*todolist[200])(void *parameters); // Array of pointers to structs containing each function’s parameters. void *paramlist[200]; void realtime(void) { int i; for (i = […]

C语言中的动态方法调度

我知道这听起来很傻,我知道C不是面向对象的语言。 但有没有办法在C中实现动态方法调度? 我考虑过函数指针,但没有得到完整的想法。 我怎么能实现这个?