时间:2023-03-26 13:06:01 | 来源:营销百科
时间:2023-03-26 13:06:01 来源:营销百科
虚拟函数虚拟函数的动态绑定:虚拟函数的'动态绑定'特性虽然很好,但也有其内在的空间以及时间开销,每个支持虚拟函数的类(基类或派生类)都会有一个包含其所有支持的虚拟函数指针的'虚拟函数表'(virtual table)。另外每个该类生成的对象都会隐含一个'虚拟函数指针'(virtual pointer),此指针指向其所属类的'虚拟函数表'。当通过基类的指针或者引用调用某个虚拟函数时,系统需要首先定位这个指针或引用真正对应的'对象'所隐含的虚拟函数指针。'虚拟函数指针',然后根据这个虚拟函数的名称,对这个虚拟函数指针所指向的虚拟函数表进行一个偏移定位,再调用这个偏移定位处的函数指针对应的虚拟函数,这就是'动态绑定'的解析过程(当然C 规范只需要编译器能够保证动态绑定的语义即可,但是绝大多数的C 编译器都是用这种方式实现虚拟函数的),通过分析,不难发现虚拟函数的开销:关键词:虚拟,函数,动态