在Effective C++中,书上只提到了一句话为什么默认参数是静态绑定(bind)的:
如果默认参数值是动态绑定(bind)的,编译器将不得不想出一种方法来在运行时为虚函数的参数确定适当的默认值,这将比当前在编译期间确定它们的机制更慢、更复杂.
有人可以详细说明一下吗?为什么复杂低效?
非常感谢!
最佳答案
只要一个类有虚函数,编译器就会生成一个所谓的 v 表来计算运行时支持动态绑定(bind)和多态行为所需的正确地址。正是出于这个原因,许多类优化器致力于删除虚函数。开销更少,代码更小。如果把默认参数也算进方程中,会使整个虚函数机制更加繁琐和臃肿。
关于c++ - 默认参数的静态绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2124921/