虚函数表

Posted achao123456

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚函数表相关的知识,希望对你有一定的参考价值。

技术分享图片

 

以上述类型为例:

        

         void a_fun_1();为基类虚函数,在派生类b中没有重新进行定义;

         void a_fun_2();为基类虚函数,在派生类b中被重新进行定义;

    void b_fun_1();为派生类中新增加的虚函数;

 

那么基类a和派生类b的虚函数表是这样的:

 技术分享图片

规则是:

在派生类中,如果没有重新定义基类中的虚函数,将直接从原来虚函数表中继承将信息过来;

在派生类中,如果重新定了基类中的虚函数,那么将用新的虚函数地址覆盖原来的虚函数在虚函数表中的信息;

在派生类中,如果重新增加类虚函数,那么将在虚函数表中插入新的虚函数地址信息;

以上是关于虚函数表的主要内容,如果未能解决你的问题,请参考以下文章

多态原理探究

复盘 之 虚函数,多态

C++中的虚函数以及虚函数表

虚函数表存放在哪里

通过虚函数表调用虚函数与通过虚函数表(绕过访问权限控制)

C++ 多态 : 虚函数静态绑定动态绑定单/多继承下的虚函数表