2017-03-05 18:29:48

动态绑定 免费编辑 添加义项名

B 添加义项
?
义项指多义词的不同概念,如李娜的义项:网球运动员、歌手等;非诚勿扰的义项:冯小刚执导电影、江苏卫视交友节目等。 查看详细规范>>
所属类别 :
计算机概念
计算机概念
编辑分类

动态绑定是指在执行期间(非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。程序运行过程中,把函数(或过程)调用与响应调用所需要的代码相结合的过程称为动态绑定。

基本信息

  • 中文名

    动态绑定

  • 根    据

    实际的类型调用其相应的方法。

  • 领    域

    函数

  • 包    括

    限制访问,访问方式

折叠 编辑本段 定义

动态绑定是指在执行期间(非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法

程序运行过程中,把函数(或过程)调用与响应调用所需要的代码相结合的过程称为动态绑定。

折叠 编辑本段 静态动态绑定

除了限制访问,访问方式也决定哪个方法将被子类调用或哪个属性将被子类访问。函数调用与函数本身的关联,以及成员访问与变量内存地址间的关系,称为绑定。在计算机语言中有两种主要的绑定方式,静态绑定和动态绑定。静态绑定发生于数据结构和数据结构间,程序执行之前。静态绑定发生于编译期,因此不能利用任何运行期的信息。它针对函数调用与函数的主体,或变量与内存中的区块。动态绑定则针对运行期产生的访问请求,只用到运行期的可用信息。在面向对象的代码中,动态绑定意味着决定哪个方法被调用或哪个属性被访问,将基于这个类本身而不基于访问范围。

折叠 编辑本段 动态绑定

折叠 定义

动态绑定是将一个过程调用与相应代码链接起来的行为。是指与给定的过程调用相关联的代码,只有在运行期才可知的一种绑定,他是多态实现的具体形式。

折叠 实现原理

C++中,通过基类的引用或指针调用虚函数时,发生动态绑定。引用(或指针)既可以指向基类对象也可以指向派生类对象,这一事实是动态绑定的关键。用引用(或指针)调用的虚函数在运行时确定,被调用的函数是引用(或指针)所指对象的实际类型所定义的。

C++中动态绑定是通过虚函数实现的。而虚函数是通过一张虚函数表(virtual table)实现的。这个表中记录了虚函数的地址,解决继承、覆盖的问题,保证动态绑定时能够根据对象的实际类型调用正确的函数。

在C++的标准规格说明书中说到,编译器必需要保证虚函数表的指针存在于对象实例中最前面的位置(这是为了保证正确取到虚函数的偏移量)。这意味着我们通过对象实例的地址得到这张虚函数表,然后就可以遍历其中函数指针,并调用相应的函数。

折叠 缺点

1.动态绑定在函数调用时需要在虚函数表中查找,所以性能比静态函数调用稍低。

2.通过基类类型的指针访问派生类自己的虚函数将发生错误。

阅读全文

热点资讯