fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class A
  5. {
  6. };
  7.  
  8. class B:public A
  9. {
  10. public:
  11. B() { cout<<"B"<<endl; }
  12. };
  13.  
  14. class C:public A
  15. {
  16. public:
  17. C() { cout<<"C"<<endl; }
  18. };
  19.  
  20. class D:public C
  21. {
  22. public:
  23. D() { cout<<"D"<<endl; }
  24. };
  25.  
  26. typedef A *creator();
  27. creator *Tb[]=
  28. {
  29. [] () -> A* { return new B(); },
  30. [] () -> A* { return new C(); },
  31. [] () -> A* { return new D(); }
  32. };
  33.  
  34. int main()
  35. {
  36. A *b=Tb[0]();
  37. A *c=Tb[1]();
  38. A *d=Tb[2]();
  39. delete b;
  40. delete c;
  41. delete d;
  42. return 0;
  43. }
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
B
C
C
D