gpt4 book ai didi

c++ - 静态多态定义与实现

转载 作者:IT老高 更新时间:2023-10-28 12:48:54 25 4
gpt4 key购买 nike

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

3年前关闭。




Improve this question




我对我有时听说的静态多态性的概念有一些疑问;您可能主要在 C++ 的上下文中解释它们,但我希望在适用的情况下提供与语言无关的答案(因此标记 C++ 和语言无关)。

  • 我们通常如何定义静态多态性? 例如,我认为 std::sort C++ 中的函数应该被认为是静态多态的,因为它依赖于一些对象提供的接口(interface),这些对象的行为类似于迭代器,并且提供的迭代器接口(interface)下的确切行为可以在编译时确定。这个解释是我们如何定义静态多态性,还是只是对特定情况的描述,还有更多内容?
  • 常见的码型有哪些在 C++ 中使用静态多态?另外:SP 是否只能通过 C++ 中的模板实现?
  • 是真的吗给定的 UML 类图不直接描述如何处理多态性,因此,它至少可以部分地静态或动态实现?换句话说:静态与动态多态的选择是否独立于 OOP 模型,从而由实现者决定?
  • 静态多态是否只是 C++ 特有的 并与模板的工作方式有关?如果没有,它是否存在于除 C++ 之外的任何其他主流语言中?我们可以在 Java、C#.. 中使用静态多态等价物吗,它会带来什么好处吗?
  • 最重要的... 使用静态多态的实际好处是什么? 我想我们可以同意它降低了代码的灵 active ;除了 - 在 C++ 的情况下 - 节省一个指针取消引用(虚拟函数/函数指针/委托(delegate)成本)之外,还有什么优点?什么是问题类别静态多态在哪里特别有用,实现的正确选择?
  • 最佳答案

  • 静态多态行为是type polymorphism这发生在编译时而不是运行时。
  • 是的。
  • UML 是关于类在运行时如何交互——我不相信有一种 UML 格式来描述模板,但我可能是错的。
  • 据我所知,它是特定于 C++ 的,但鉴于我没有使用过所有发明的语言,我并不乐观。 :) 也就是说,像 C# 和 Java 这样的 JIT 语言通常非常擅长在某些情况下使用在运行时而不是在编译时收集的信息来消除间接调用的性能影响。这是否是在编译时,虽然有点悬而未决……毕竟,它被称为即时编译器。
  • 主要的好处就是性能。运行时多态可以做静态多态可以做的所有事情(实际上它可以做更多),但它带来了间接调用的成本(如果有足够多的话,这可能会很昂贵)

  • 现在,模板本身除了实现编译时多态之外还有很多用途——例如使 boost::bind 的 SFINAE 魔法。工作当然不是多态的——它只是为了消除语言本身的不一致。

    关于c++ - 静态多态定义与实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4557141/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com