题目标题

虚函数表是如何构造和继承的?

参考解析

1)基类虚函数表的构造
首先在基类声明中找到所有虚函数,按照其声明顺序编码,然后按照此声明顺序为基类创建一个虚函数表,其内容就是指向这些虚函数的函数指针,按照虚函数声明的顺序将这些虚函数的地址填入虚函数表中,例如若show放在虚函数声明的第二位,则在虚函数表中也放第二位
2)子类虚函数表的构建和继承:
首先将基类的虚函数表复制到该子类的虚函数表指针中,若子类重写了基类的虚函数show,则将子类的虚函数表存放show的函数地址更新未重写后函数的函数指针(未重写前存放的是子类的show虚函数的函数地址),若子类增加了一些虚函数的声明,则将这些虚函数的地址加到该类虚函数表的后面