首页 > 技术文章 > 关于虚函数

dayongge 2021-02-01 14:26 原文

父类中加了虚函数,则在对象的开始位置会分配出一个指针位置来指向虚函数表,表中记录虚函数。而子类对象的起始位置本来就是一个父类对象,当然就包含了开始位置的这个指针。所以一个有虚函数的空的类和它的子类大小都是一个指针的大小。

虚函数表中记录了函数的真实地址。由下图的调试结果验证出如果子类中没有重写这个虚函数,则子类和父类的虚函数表中的函数真实地址是一样的,也就是都指向父类的这个成员函数。

如果子类中重写了这个函数,那么子类中虚函数表中的函数地址就会变成子类中重写的函数的地址。

 

推荐阅读