#include<iostream>
using namespace std;
class transport
{
public :
transport(){}
virtual ~transport(){}
virtual void bedrive()=0;
};
class bus :public transport
{
public:
bus(){}
virtual~bus(){}
void bedrive(){cout<<"bus"<<endl;}
};
class car :public transport
{
public:
car(){}
virtual~car(){}
void bedrive(){cout<<"car"<<endl;}
};
class road
{
public:
road():_instance(NULL){}
virtual~road(){}
void settransport(transport *instance)
{
_instance=instance;
}
virtual void drive()=0;
protected:
transport *_instance;
};
class shuini :public road
{
public:
shuini(){}
virtual~shuini(){}
void drive(){cout<<"行驶在水泥路";_instance->bedrive();}
};
class liqing :public road
{
liqing(){}
virtual~liqing(){}
void drive(){cout<<"行驶在沥青路";_instance->bedrive();}
};
int main()
{
road *ro=new shuini;
transport *tr=new bus;
ro->settransport(tr);
ro->drive();
delete ro;
delete tr;
system("pause");
return 0;
}