1、virtual关键字
当基类和派生类存在同名函数时,基类的函数前加上virtual关键词,可以确保派生类的函数正常执行。
#include<iostream>
using namespace std;
class pet{
public:
void speak(){cout<<"zzz"<<endl;}
};
class dog:public pet{
public:
void speak(){cout<<"wang!wang!wang!"<<endl;}
};
int main(){
pet pet1,*p=&pet1;
dog dog1;
p=&dog1;
p->speak();
return 0;
}
运行结果:zzz
#include<iostream>
using namespace std;
class pet{
public:
virtual void speak(){cout<<"zzz"<<endl;} //加上virtual
};
class dog:public pet{
public:
void speak(){cout<<"wang!wang!wang!"<<endl;}
};
int main(){
pet pet1,*p=&pet1;
dog dog1;
p=&dog1;
p->speak();
return 0;
}
运行结果:wang!wang!wang!