虚函数
父类写了虚函数后,父类内部会产生一个虚函数表指针,指向一个虚函数表,表里保存的是虚函数的地址
子类继承父类后,如果不重写父类的虚函数,虚表里面保存的是父类的虚函数地址,如果重写,则保存的是子类的虚函数的地址
当父类指针或者引用指向子类对象后,调用虚函数的时候,通过vfptr查看虚函数表,不查看父类的虚函数表,会直接查看子类的虚函数表,调用子类的虚函数
查看类结构的命令:cl /d1 reportSingleClassLayout类名 cpp名字
父类:
子类:
如果子类有自己的虚函数,函数地址会加1
如果是多继承的话,子类会有多个vfptr
极端情况:多继承,而且每个父类都有一个同名的虚函数