2、 在派生类中重新定义此函数,要求函数名、函数类型、函数参数个数和类型全部与基类的虚函数相同,并根据派生类的需要重新定义函数体。
3、 在主函数中定义一个基类指针指向基类对象,引用基类函数;指向派生类对象,引用派生类函数。
C++规定:一个成员函数被声明为虚函数时,派生类中的同名函数都自动成为虚函数。所以派生类中同名函数加不加virtual都是可以的,习惯上添加,程序易懂。
注意:如果在派生类中没有对基类的虚函数重新定义,则派生类简单地继承其直接基类的虚函数。
通过虚函数与指向基类对象的指针变量的配合使用,就能方便地调用同一类族中不同类的同名函数,只要先用基类指针指向即可。如果指针不断地指向同一类族中的不同类的对象,就能不断调用不同类的对象中的同名函数。
如果在基类中定义的非虚函数在派生类中被重新定义,如果用基类指针调用该成员函数,系统会调用对象中基类部分的成员函数;如果用派生类的指针调用该成员函数,则系统对调用派生类对象中的成员函数,这不是多态,是不同类型的指针,没有用到虚函数
摘自 安诺的专栏