基类指针指向派生类
class A
{
public:
virtual void f()
{
cout<<"fa"<<endl;
}
void g(){
cout<<"ga"<<endl;
}
};
class B:public A
{
public:
virtual void f()
{
cout<<"fb"<<endl;
}
void g(){
cout<<"gb"<<endl;
}
};
vb B::f A::gB::g
如果没virtual关键字
A::f A::g B::f B::g;
A*a=new B;
a->f(); print fb;
a->g(); print ga;
如果有A B一个C继承A继承B 木有重写
A::f A::g C::f C::g
B::fB::g
如果f被重写了的话就是
C::f A::g C::f C::g
C::fB::g
如果不是指针。就不这样了
A a;
a.f a.g print fa ga