利用多继承使target类拥有了Adpatee的功能
#include <cstdlib>
#include <iostream>
using namespace std;
class Target
{
public:
virtual ~Target(){cout<<"Target 基类析构"<<endl;}
virtual void TargetDo(){cout<<"Target do sth."<<endl;}
virtual void AdpateeDo() = 0;
};
class Adpatee
{
public:
virtual ~Adpatee(){cout<<"Adpatee 基类析构"<<endl;}
void Do(){cout<<"Adpatee do sth."<<endl;}
};
class Adpater:public Target,private Adpatee
{
public:
virtual ~Adpater(){cout<<"Adpater 子类析构"<<endl;}
virtual void AdpateeDo(){Adpatee::Do();}
};
void DoUseTarget(Adpater* pAdp)
{
pAdp->TargetDo();
pAdp->AdpateeDo();
}
int main(int argc, char *argv[])
{
Adpater* pAdp = new Adpater;
DoUseTarget(pAdp);
delete pAdp;
system("PAUSE");
return EXIT_SUCCESS;
}