【发布时间】:2011-08-07 15:33:56
【问题描述】:
为什么在 C++、C# 和 Ada 95 中默认决定使用静态方法绑定,而不是动态方法绑定。?
实现速度的提升是否值得抽象和可重用性的损失?
【问题讨论】:
-
是否由于这种默认行为而失去了抽象和可重用性?无论如何你都可以实现它,不是吗?
-
我不认为执行速度是一个因素;从静态方法调用到动态方法调用的成本差异非常小。我也不同意你的假设,即失去抽象性或可重用性。
-
在标题中添加了“一些”,试图使其更好地匹配问题(并且少一点争论)。如果框架正确,这实际上是一个很好的问题。
-
@Martin - 可以说,任何感觉需要为作者提供编译指示以请求内联例程的语言(就像 Ada 和 C++ 所做的那样)以消除子例程调用开销可能会吝啬使一切变得动态的“微不足道”的额外成本。
-
@T.E.D. - 也可以争论,特别是。在 Ada 的情况下,允许轻松生成访问子程序 [更多]。正常的静态默认值是“整体推”[类似于宏]和默认情况下使事物动态化之间的一个很好的折衷......动态调用虽然由于它们的间接表而灵活,但也很容易受到攻击,因为该表可能会变成被某人在记忆中跺脚而损坏。
标签: c# c++ ada dynamic-binding late-static-binding