C++郑莉8-9
#include <iostream>
using namespace std;
class Base
{
public:
virtual int fn1(){cout<<"Base1"<<endl;}
virtual int fn2(){cout<<"Base2"<<endl;}
virtual ~Base(){
}
};
class Derived1:public Base
{
public:
virtual int fn1(){cout<<"D11"<<endl;}
virtual int fn2(){cout<<"D12"<<endl;}
};
class Derived2:public Derived1
{
public:
virtual int fn1(){cout<<"D21"<<endl;}
virtual int fn2(){cout<<"D22"<<endl;}
};
void fun(Base *b){
b->fn1();
Derived1 *d=dynamic_cast<Derived1*>(b);
cout<<d<<endl;
if(d!=0)d->fn2();
}
int main(){
Base b;
fun(&b);
Derived1 d1;
fun(&d1);
Derived2 d2;
fun(&d2);
}