c++ - 默认参数的静态绑定(bind)

标签 c++

在Effective C++中,书上只提到了一句话为什么默认参数是静态绑定(bind)的:

如果默认参数值是动态绑定(bind)的,编译器将不得不想出一种方法来在运行时为虚函数的参数确定适当的默认值,这将比当前在编译期间确定它们的机制更慢、更复杂.

有人可以详细说明一下吗?为什么复杂低效?

非常感谢!

最佳答案

只要一个类有虚函数,编译器就会生成一个所谓的 v 表来计算运行时支持动态绑定(bind)和多态行为所需的正确地址。正是出于这个原因,许多类优化器致力于删除虚函数。开销更少,代码更小。如果把默认参数也算进方程中,会使整个虚函数机制更加繁琐和臃肿。

关于c++ - 默认参数的静态绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2124921/

相关文章:

c++ - Lua 访问表的键和值

c++ - 使用 std::function w/std::bind 时的 EXC_BAD_ACCESS

c++ const_cast<char*> 在 2 个 64 位 ms 操作系统上的相同二进制不同结果

c++ - 成员函数指针和虚类

c++ - 使用 std::function 对象指向 C++11 中较大容器中结构的单个组件的迭代器

c++ - 为什么 GNU make 总是重新链接我的项目?

c++ - 在 Qt 中使用 Swift

c++如何测试堆中的某一位内存是否空闲?

c++ - 为什么内部类*定义*不能使用它们的父类?

c++ - 使用仿函数子类化窗口 (Win32)