若没有声明虚函数,子类对象调用父类中未被重载的方法后,若继续调用父类中存在的其它方法,则优先使用父类中的方法。
若父类中待调用函数声明为虚的 virtual void print2() ,之后通过父类中未重载的方法调用对应声明为虚的方法 print2() 会使用子类中重载的方法。若子类未重载,继续使用父类方法。
#include <iostream> using namespace std; class A { public: A() { //print(); } void print() { cout << "A"; print2(); } void print2() { cout << "A2"; } }; class B:public A { public: B() { //print(); } void print2() { cout << "B2"; } }; int main() { B b; b.print(); return 0; }