【发布时间】:2012-01-02 20:36:45
【问题描述】:
第 4 页上写着:
Objective-C 动态决定——在运行时——通过搜索接收者的类和父类来处理消息的代码。 (Objective-C 运行时缓存搜索结果以获得更好的性能。)相比之下,C++ 编译器在编译时静态构造调度表。
我在 StackOverflow 和 Wikipedia 上阅读了很多内容,我只想说我完全不知道 C++ 是否支持动态调度(有人说这是动态绑定的一种实现)。
谁能弄清楚动态调度、动态绑定以及 C++ 是否支持其中之一或两者之间的区别?我不是 C++ 或 Objective-C 专家,我来自 Java、Python 和 PHP 世界。
【问题讨论】:
-
我不认为这本书是说 C++ 不支持动态调度。我认为这是说在 C++ 中,调度表(用于动态调度)是在编译时构建的(即“静态”)。这是真的,至少对于许多常见的 C++ 实现来说是这样。不过,我对 Objective-C 一无所知,因此我无法将其与 Objective-C 所做的相提并论。
-
我想这取决于你如何定义这些。我想大多数人会说 C++ 具有“动态调度”,尽管大多数实现不需要进行任何运行时搜索来实现这一点。
-
我添加了
objective-c标签。讨论可能会受益于objective-c中的知识渊博的人
标签: c++ objective-c dynamic-binding dynamic-dispatch