静态和动态绑定之间的区别
![Python9 4多态和动态绑定](https://i.ytimg.com/vi/AG3wKXnBQs8/hqdefault.jpg)
内容
“功能定义”与“功能调用”的绑定关联,或“值”与“变量”的绑定关联,称为“绑定”。在编译过程中,每个“函数定义”都有一个内存地址;一旦完成函数调用,对程序执行的控制就会移到该内存地址,并执行存储在该位置的功能代码,这就是“函数调用”与“函数定义”的绑定。绑定可以分为“静态绑定”和“动态绑定”。
如果在运行时之前就已经知道了,将调用哪个函数或将什么值分配给变量,则为“静态绑定”。如果在运行时知道,则称为“动态绑定”。
- 比较表
- 定义
- 关键差异
- 结论
比较图:
比较依据 | 静态绑定 | 动态绑定 |
---|---|---|
事件发生 | 在编译时发生的事件是“静态绑定”。 | 在运行时发生的事件是“动态绑定”。 |
信息 | 在编译时就知道调用函数所需的所有信息。 | 在运行时会知道调用函数所需的所有信息。 |
优点 | 效率。 | 灵活性。 |
时间 | 快速执行。 | 执行缓慢。 |
别名 | 早期绑定。 | 后期绑定。 |
例 | 重载函数调用,重载运算符。 | C ++中的虚函数,java中的重写方法。 |
静态绑定的定义
当编译器确认编译期间调用函数所需的所有信息或变量的所有值时,称为“静态绑定”。由于在运行时之前已知道所有必需信息,因此它提高了程序效率,并且还提高了程序的执行速度。
静态绑定使程序非常高效,但是却降低了程序的灵活性,因为在程序中预定义了“变量的值”和“函数调用”。静态绑定是在编码时在程序中实现的。
重载函数或运算符是编译时多态性的示例,即静态绑定。
用重载示例在C ++中实现静态绑定
#包括 在这里,指针的值随着程序的执行而改变,并且指针的值决定了将调用哪个类的函数。因此,这里的信息是在运行时提供的,它需要花费时间来绑定数据,这会降低执行速度。 但是,我们得出的结论是,当我们具有变量和函数调用的值的先验知识时,我们将应用静态绑定。相反,在动态绑定中,我们在执行时提供所有信息。
结论: