-1

我有两个类foobar一个是另一个的超类,它们都有一个方法hello_world

class foo {
    virtual void hello_world();
};
class bar : public foo {
    void hello_world();
};

我的问题是:如果我将它设为虚拟 for bar's会有任何性能差异hello_world吗?它会变成这样:

class foo {
    virtual void hello_world();
};
class bar : public foo {
    virtual void hello_world();
};

我将主要hello_worldbar. 我知道虚函数会使函数变慢,因为我们会进行运行时查找。但是对于这种情况,有什么区别吗?

4

1 回答 1

3

与具有相同逻辑的可内联函数相比,在类实际上可能是多态的上下文中调用虚函数总是会对性能产生一些影响。主要原因是调用函数的开销很小,查找需要调用的函数的开销很小,以及优化机会的重大损失。最后一点通常是最昂贵的。

原始示例没有编译,也就是说,很明显还没有进行性能分析。一旦您测量到您的代码运行太慢并且特定调用确实在性能问题所在的区域中,请担心性能影响。

于 2012-11-14T23:11:01.473 回答