年轻人的努力

导航

虚函数

父类写了虚函数后,父类内部会产生一个虚函数表指针,指向一个虚函数表,表里保存的是虚函数的地址

 

子类继承父类后,如果不重写父类的虚函数,虚表里面保存的是父类的虚函数地址,如果重写,则保存的是子类的虚函数的地址

 

当父类指针或者引用指向子类对象后,调用虚函数的时候,通过vfptr查看虚函数表,不查看父类的虚函数表,会直接查看子类的虚函数表,调用子类的虚函数

查看类结构的命令:cl /d1 reportSingleClassLayout类名 cpp名字

 

父类:

 

 

子类:

 

 

如果子类有自己的虚函数,函数地址会加1

 

 

如果是多继承的话,子类会有多个vfptr

 

极端情况:多继承,而且每个父类都有一个同名的虚函数

 

posted on 2021-04-17 23:44  年轻人的努力  阅读(79)  评论(0编辑  收藏  举报