简单问题:非虚函数是否会产生在具有其他虚函数的类中进行 vtbl 查找的成本?例如:
Class A
{
virtual void init();
void update();
};
Class B : public A
{
void init();
}
A* = new B();
A->init();
while(true)
{
A->update();
}
更新调用会产生 vtbl 查找的成本吗?这段代码对性能非常敏感,因此我需要避免虚函数调用。谢谢!
最佳答案
没有。 update() 不会出现在 vtable 中。维基百科是这么说的:“请注意,那些在声明中不携带关键字 virtual 的函数......通常不会出现在 vtable 中。默认构造函数所带来的特殊情况也有异常(exception)。”
关于function - 具有虚函数的类中的非虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6378960/