24、编译器处理虚函数表应该如何处理
对于派⽣类来说,编译器建⽴虚函数表的过程其实⼀共是三个步骤:
拷贝基类的虚函数表,如果是多继承,就拷⻉每个有虚函数基类的虚函数表
当然还有⼀个基类的虚函数表和派⽣类⾃身的虚函数表共⽤了⼀个虚函数表,也称为某个基类为派⽣类的主基类
查看派生类中是否写基类中的虚函数, 如果有,就替换成已经重写的虚函数地址;查看派⽣类是否有⾃身的虚函数,如果有,就追加⾃身的虚函数到⾃身的虚函数表中。
Derived *pd = new D(); B *pb = pd; C *pc = pd; 其中 pb, pd, pc 的指针位置是不同的,要注意的是派⽣类的⾃身的内容要追加在主基类的内存块后。

Last updated