C++学习笔记-虚函数及虚函数表

来源:互联网 发布:vscode mysql 编辑:程序博客网 时间:2024/05/18 05:35

C++中的虚函数一直是一个经典问题,今天学习的过程和心路历程写出来分享给大家。

在C++的继承中,当有多个不同子类重写(覆盖)基类的某个方法时,我们想要每个子类调用自己的该方法,此时基类中需要被重写的方法需要加上关键字virtual。那么问题来了,为什么使用virtual可以实现动态调用的目的呢。

这是因为每一个类会为他的虚函数生成一张虚函数表,采用指针的形式指向该类中自己实现的函数,这里使用网上的两张图来说明一下
这里写图片描述
这里写图片描述
从图上可以看出,class2在继承了class1以后又重写了class1的虚函数Vfunc2(),class2的虚函数表中名称为Vfunc2的指针就指向了class2的虚函数Vfunc2()。

那么问题又来了,这个虚函数表是在什么时候生成的呢?经过网上查阅资料得知,虚函数表在编译期间就已经生成了。

示例代码有空将来补上,如有错误,敬请指正

0 0
原创粉丝点击