fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Base
  6. {
  7. public:
  8. virtual void fun()
  9. {
  10. cout<<"Base";
  11. }
  12. };
  13.  
  14. class Der:public Base
  15. {
  16. Base &pb;
  17. Der(Base& b) : pb(b) {}
  18. public:
  19. static Der Decorate(Base&& b){ return Der(b); }
  20. virtual void fun()
  21. {
  22. cout<<"Der...";
  23. pb.fun();
  24. }
  25. };
  26.  
  27. int main()
  28. {
  29. Der::Decorate(Der::Decorate(Base())).fun();
  30. return 0;
  31. }
Success #stdin #stdout 0s 2928KB
stdin
Standard input is empty
stdout
Der...Der...Base