#include <iostream>
using namespace std;
class Father{
public:
virtual void Func(){
cout << "Father::Func()" << endl;
}
};
class Son:public Father{ //覆盖第一条件:继承
public:
void Func(){ //覆盖第二条件:子类重写父类虚函数
cout << "Son::Func" << endl;
}
};
int main(){
Father* pf = &s; //覆盖第三条件:父类引用/指针指向子类
pf->Func();
}
示例二:
#include <iostream>
using namespace std;
class A{
public:
virtual void Func(){
cout << "A::Func()" <<endl;
}
void Func(int a){
cout << "A::Func(" << a << ")" << endl;
}
};
class B:public A{
public:
void Func(){
cout << "B::Func()" << endl;
}
};
int main(){
B b;
b.Func(); //同名隐藏
b.A::Func();
A a(b);
a.Func();
a.Func(2); //重载Func()
A c; //本质和上一种情况相同
c = b;
c.Func();
c.Func(3); //重载Func()
A* pa = &b;
pa->Func(); //覆盖/多态/重写
pa->Func(4); //重载Func()
A& fa = b;
fa.Func(); //覆盖/多态/重写
fa.Func(5); //重载Func()
}
示例:
#include <iostream>
using namespace std;
c