C++中的非虚函数与虚函数调用效率

Non-virtual vs virtual function call efficiency in C++

阅读虚函数时,我遇到了以下概念:"C++ non virtual function calls are resolved at compile time with static binding, while virtual function calls are resolved at runtime with dynamic binding."

我的问题是:1) 如果我们的程序中有大量虚函数调用,那么它会对性能产生很大影响吗,因为它们是在运行时计算的?还是它与现代机器无关?

2)这个数字取决于堆栈吗?

是不是比较慢?明确地。够重要吗?并不真地。默认情况下,大多数现代 OO 语言都具有动态调度,这意味着 所有 函数都是虚拟的,而且它们的速度仍然适中。自由地使用它,但不要不必要地使用它。

一般来说,引用虚表来获取对象的函数地址的成本可以忽略不计。

但是,与其他任何事情一样,这取决于您的应用程序。一个好的经验法则是,如果您正在设计一个 class,并且您 知道 对速度至关重要,那么请考虑此类问题。否则,担心更大的事情。