fork(1) download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct Beverage
  6. {
  7. static int last;
  8. int i;
  9. Beverage() : i(++last) {}
  10. virtual ~Beverage() { cout << "~Beverage #" << i << endl; }
  11. };
  12.  
  13. int Beverage::last = 0;
  14.  
  15. struct DarkRoast : Beverage
  16. {
  17. virtual ~DarkRoast() { cout << "~DarkRoast #" << i << endl; }
  18. };
  19.  
  20. struct Whip : Beverage
  21. {
  22. Beverage &p;
  23. Whip(Beverage &p) : p(p) {};
  24. virtual ~Whip() { cout << "~Whip #" << i << endl; delete &p; }
  25. };
  26.  
  27. int main()
  28. {
  29. Beverage * beverage2 = new DarkRoast();
  30. beverage2 = new Whip(*beverage2);
  31. delete beverage2;
  32.  
  33. return 0;
  34. }
Success #stdin #stdout 0s 16064KB
stdin
Standard input is empty
stdout
~Whip #2
~DarkRoast #1
~Beverage #1
~Beverage #2