#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdio>
using namespace std;
typedef long long LL;
class A{
public:
A(){}
virtual void fangfa1();
virtual void fangfa2();
};
void A::fangfa1(){
fangfa2();
}
void A::fangfa2(){
printf("AAAAAAAA\n");
}
class B :public A{
public:
virtual void fangfa1();
virtual void fangfa2();
};
void B::fangfa1(){
A::fangfa1();
}
void B::fangfa2(){
printf("BBBBBBBB\n");
}
class C :public B{
public:
virtual void fangfa1();
virtual void fangfa2();
};
void C::fangfa1(){
A::fangfa1();
}
void C::fangfa2(){
printf("CCCCCCCC\n");
}
int main(){
A* a = new A();
a->fangfa1();
B* b = new B();
b->fangfa1();
C* c = new C();
c->fangfa1();
return 0;
}
在B。C类对象中调用A类对象的方法。重写后最多会调用到当前对象所在类重写的方法。
此为上述代码运行结果。