gpt4 book ai didi

c - C(严格来说是 C,不是 C++)中的静态和动态绑定(bind)是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 01:09:16 25 4
gpt4 key购买 nike

我最初担心发布这个问题,以免它重复。但即使在使用许多关键字进行谷歌搜索后,我也无法在 StackOverflow 上找到任何解释 C 静态和动态绑定(bind)的链接。C++ 有问题和答案虽然,但所有涉及 classes 和显然不适用于 C 的东西。StackExchange 外部的链接非常可疑。

我需要知道这两个绑定(bind)之间的严格定义和对比,仅在 C 的上下文中。如果你能花一些时间回答它,我将不胜感激,或者给我 StackOverflow 上的链接,以免我弄错它之前已经详细回答了。

我打算清楚地了解:

  1. 在 C 中绑定(bind)。
  2. C 中的静态与动态绑定(bind)。

编辑 如果您能用一些简单的代码片段解释差异,那将非常有帮助。

最佳答案

形式上,“原生”C 中没有这样的术语。

术语静态绑定(bind)(“早期绑定(bind)”)和动态绑定(bind)(“后期绑定(bind)”)的简化解释:它们最常用于面向对象的设计中,以确定是否决定调用特定的继承成员函数在编译时或运行时完成。

虚函数的意思是它是一个被调用的继承函数,而不是被继承的基类中的等效函数。如果编译器可以在编译时确定一个对象是“基类”类型还是“继承类”类型,那么您将获得静态绑定(bind),否则将获得动态绑定(bind)。因此,您需要某种运行时类型信息 (RTTI)。

在上述上下文中,这些术语只有在您的 C 程序中使用面向对象的继承/多态性时才有意义。 C 语言不支持这种机制。 可以在 C 中“手动”实现它们,但这很乏味,而且代码往往很乱。对于那些坚持的人,有一本书“ANSI-C 中的面向对象设计”演示了如何做到这一点。

(就我个人而言,我推荐那本书,也不会在 C 中实现多态性。如果您需要那些 OOP 功能,只需使用 C++ 编写代码即可。)

关于c - C(严格来说是 C,不是 C++)中的静态和动态绑定(bind)是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16420628/

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