问题:C++虚函数的工作原理是什么?
分析:C++中有虚函数表,该表中存储了各个虚函数的指针,C++虚函数中父类会写一个版本,子类实现另一个版本,它根据传入
的指针是属于父指针(引用)还是子类指针(应用)来分别调用不同虚函数。
当子类重写父类的虚函数时,子类的虚函数表中位于前面的父类的虚函数地址会被替换为子类重写的虚函数地址,从而达到多态的目的。
分析:C++中有虚函数表,该表中存储了各个虚函数的指针,C++虚函数中父类会写一个版本,子类实现另一个版本,它根据传入
的指针是属于父指针(引用)还是子类指针(应用)来分别调用不同虚函数。
关键:
1多态,用父类指针指向子类实例,用父类指针调用实际子类的成员函数。
2 虚函数表,每个类有一个虚函数表用于存放虚函数的地址,并且在如果没有重写父类的虚函数时,父类的虚函数在虚函数表的前面,当子类重写父类的虚函数时,子类的虚函数表中位于前面的父类的虚函数地址会被替换为子类重写的虚函数地址,从而达到多态的目的。