码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 动态绑定

时间:2015-10-03 10:40:48      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

1.为每一个包含虚函数的类设置一个虚表(VTABLE

  每当创建一个包含有虚函数的类或从包含虚函数的类派生一个类时,编译器就会为这个类创建一个VTABLE。在VTABLE中,编译器放置了这个类中,或者它的基类中所有已经声明为 virtual的函数的地址。如果在这个派生类中没有对基类中声明为 virtual 的函数进行重新定义,编译器就使用基类的这个虚函数的地址。而且所有VTABLE中虚函数地址的顺序是完全相同的。

 

2.初始化虚指针(VPTR
  然后编译器在这个类的各个对象中放置VPTRVPTR在对象的相同的位置(通常都在对象的开头)。VPTR必须被初始化为指向相应的VTABLE
 
3.为虚函数调用插入代码 
  当通过基类的指针调用派生类的虚函数时,编译器将在调用处插入相应的代码,以实现通过VPTR找到VTABLE,并根据VTABLE中存储的正确的虚函数地址,访问到正确的函数。

C++ 动态绑定

标签:

原文地址:http://www.cnblogs.com/wmsir/p/4853112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!