动态的为某个对象增加额外的功能
#include <iostream>
using namespace std;
class Car
{
public:
virtual void showFunc() = 0;
virtual ~Car()
{
}
};
class smallCar :public Car
{
public:
void showFunc()
{
cout << "我能跑" << endl;
}
};
class flyCar : public Car
{
public:
flyCar(Car *car)
{
_car = car;
}
void fly()
{
cout << "我还能飞" << endl;
}
void showFunc()
{
_car->showFunc();
this->fly();
}
private:
Car *_car = nullptr;
};
int main()
{
Car *myCar = new smallCar;
myCar->showFunc();
Car *flycar = new flyCar(myCar);
flycar->showFunc();
delete flycar;
delete myCar;
return 0;
}