假如有基类和派生类,派生类重写了基类的函数,如果基类中被重写的函数前面没有加virtual,则调用该派生类函数时,会调用基类的函数。
如果加了virtual,则会调用派生类的函数
#include<iostream>
using namespace std;
class B0
{
public:
B0(){}
virtual void display()
{
cout<<"B0::display"<<endl;
}
};
class B1:public B0
{
public:
B1(){}
void display()
{
cout<<"B1::display"<<endl;
}
};
class D1:public B1
{
public:
D1(){}
void display()
{
cout<<"D1::display"<<endl;
}
};
void func(B0* ptr)
{
ptr->display();
}
int main()
{
B0 b0;
B1 b1;
D1 d1;
B0* p;
p=&b0;
func(p);
p=&b1;
func(p);
p=&d1;
func(p);
}