动态的为某个对象增加额外的功能
#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; }