对于使用虚函数表(vtable)的编译器实现,是否存在虚函数表在运行时更改的情况? 或者 vtable 只在编译时填充,运行时不执行任何修改操作?
对于使用虚函数表(vtable)的编译器实现,是否存在虚函数表在运行时更改的情况? 或者 vtable 只在编译时填充,运行时不执行任何修改操作?
我不知道任何使用运行时更改虚拟表的多态实现的C++ ABI。
无论如何,这样做并没有太大用处,因为虚拟表通常描述代码的一个属性(成员函数与类层次结构中其他函数之间的关系),而C++代码在运行时不会改变。
而且因为这样做没有什么用处,所以它会很浪费。
std::function
可以在运行时重新分配,因此这是另一种选择。 - David Haim