c++ - O'Reilly 的 "Objective-C Pocket Reference"声称 C++ 不支持动态调度,这是真的吗?

标签 c++ objective-c dynamic-binding dynamic-dispatch

在第 4 页上,它说:

Objective-C decides dynamically--at run-time--what code will handle a message by searching the receiver's class and parent classes. (The Objective-C runtime caches the search results for better performance.) By contrast, a C++ compiler constructs a dispatch table statically -- at compile time.

我在 StackOverflow 和 Wikipedia 上阅读了很多内容,足以说明我对 C++ 是否支持 Dynamic Dispatch(有人说是 Dynamic Binding 的实现)感到非常困惑。

谁能弄清楚动态调度、动态绑定(bind)之间的区别,以及 C++ 是否支持其中一个或两个?我不是 C++ 或 Objective-C 专家,我来自 Java、Python 和 PHP 世界。

最佳答案

本书中提到的动态调度可能是 C++ 上下文中通常提到的一种不同的动态调度:

  • C++ 支持虚函数形式的动态分配。相应的名称和参数在编译时确实是已知的,尽管实际调用的函数取决于对象的动态类型。
  • 我不是 Objective C 专家,但我的理解是您可以在运行时动态地向单个对象添加函数,这些函数在调用时会被查找。 C++ 不支持这种动态调度。

关于c++ - O'Reilly 的 "Objective-C Pocket Reference"声称 C++ 不支持动态调度,这是真的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8705083/

相关文章:

ios - 如何比较 Objective-c 中的各种 NSArray?

java - 为什么需要动态绑定(bind)?

Java 动态绑定(bind)和方法覆盖

c++ - Visual Studio 2008 c++ 条件模板继承错误?

c++ - 如何从 vector 中提取子 vector ?

C++ 类转换运算符

Java动态绑定(bind): Why the compiler cannot distinguish overriden methods

C++-错误C2144语法错误: 'int' should be preceded by ';'

ios - 使用自定义委托(delegate)与 NSNotification 与 NSUserDefaults 状态

ios - 在iOS 7中阻止传入的短信