阅读虚函数,我遇到了以下概念:“C ++非虚函数调用在编译时使用静态绑定解析,而虚函数调用在运行时通过动态绑定解析。”
我的问题是:1)如果我们的程序中有大量的虚函数调用,它会对性能产生很大的影响,因为它们是在运行时进行评估的吗?或者它与现代机器无关?
2)这个数字是否依赖于堆栈?
答案 0 :(得分:1)
速度慢吗?明确地。重要吗?并不是的。大多数现代OO语言默认都有动态调度,这意味着所有函数都是虚拟的,并且它们仍然适度快。宽大地使用它,但不是不必要的。
答案 1 :(得分:1)
一般来说,引用vtable来获取对象的函数地址的成本可以忽略不计。
但是,与其他任何事情一样,这取决于您的申请。一个好的经验法则是,如果您正在设计一个知道的类将对速度至关重要,那么请考虑这类问题。否则,担心更大的事情。