开发者社区> 问答> 正文

为什么要用函数指针呢?

为什么要用函数指针呢?

展开
收起
游客4ztx2pti3xtdw 2022-03-29 16:56:52 513 0
1 条回答
写回答
取消 提交回答
  • 原因之一是需要运行时多态。不精确地说,很多时候我们有这种需求: 当前逻辑需要一些依赖标签/类型自身的操作,而不依赖的部分适合提出来作为函数。此时标签/类型的相关操作就要从外面“输入”。(或者说在“泛型”或“多态”面对的场合)

    如果标签或类型本身能在编译时鉴别,那么确实不需要写函数指针,用函数名就够了。不过我们可能会有另外一些需求:

    需要把不同标签/类型放到“同质”的东西(如容器)里处理,或者已经被放进去了;即类型擦除 有些标签/类型在当前翻译单元/模块未知,不能直接调用其相关函数 希望承载主体逻辑的函数对于不同类型只有一份二进制实例 这时候就需要一种专门的数据,顺着其值可以调用不同的函数,这样才能满足运行时多态的需求。

    这种数据成为专门的数据类型时就是函数指针。有些语言会用内嵌于对象的虚表指针或多态胖指针进行运行时多态,就实现上来说它们也免不了等价于函数指针的部分。

    2022-03-29 16:58:04
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
函数对象 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多