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

C++ C+中的非虚与虚函数调用效率+;,c++,virtual,C++,Virtual,在阅读有关虚拟函数的内容时,我遇到了以下概念:“C++非虚拟函数调用在编译时通过静态绑定解决,而虚拟函数调用在运行时通过动态绑定解决。” 我的问题是:1)如果我们的程序中有大量的虚拟函数调用,因为它们是在运行时进行计算的,那么它会对性能产生很大的影响吗?或者它在现代机器中没有那么重要 2) 这个数字取决于堆栈吗 速度慢吗?非常肯定。这足够重要吗?不是真的。大多数现代OO语言在默认情况下都具有动态分派功能,这意味着所有函数都是虚拟的,并且它们仍然有一定的速度。自由地使用它,但不是不必要的。一般来说

在阅读有关虚拟函数的内容时,我遇到了以下概念:“C++非虚拟函数调用在编译时通过静态绑定解决,而虚拟函数调用在运行时通过动态绑定解决。”

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


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

速度慢吗?非常肯定。这足够重要吗?不是真的。大多数现代OO语言在默认情况下都具有动态分派功能,这意味着所有函数都是虚拟的,并且它们仍然有一定的速度。自由地使用它,但不是不必要的。

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


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

从技术上讲,它的速度较慢,因为在有效调用该函数之前,至少还有一到两个CPU操作,但差异如此微小,其速度还不够慢,以至于无法衡量。你不必担心,谢谢你的提醒。