Custom virtual table
总的思想
这种实现思路的总体思想是: function pointer for behavior and void
pointer for data。
这是在 stackoverflow Type erasure techniques # A 中总结的,后来看了很多custom virtual table的实现,都符合这个讨论。
Function pointer的典型的代表就是:
1、std::function
2、boost::function
stackoverflow Type erasure techniques # A
The "different" methods simply differ in the way they add semantic sugar. Virtual functions, e.g., are just semantic sugar for
struct Class {
struct vtable {
void (*dtor)(Class*);
void (*func)(Class*,double);
} * vtbl
};
iow: function pointers.
Example code
在下面文章中给出了example code:
1、sodocumentation C++Type Erasure
2、stackoverflow Type erasure techniques