fork download
  1. #include <vector>
  2. #include <memory>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. struct A
  8. {
  9. virtual ~A()
  10. {
  11. cout << "A::~A()\n";
  12. }
  13. };
  14.  
  15. struct B: public A
  16. {
  17. ~B()
  18. {
  19. cout << "B::~B()\n";
  20. }
  21. };
  22.  
  23. struct C: public A
  24. {
  25. ~C()
  26. {
  27. cout << "C::~C()\n";
  28. }
  29. };
  30.  
  31. int main()
  32. {
  33. {
  34. A** array=new A*[3];
  35. array[0] = new B;
  36. array[1] = new C;
  37. array[2] = new A;
  38.  
  39. for(int i = 0; i < 3; ++i)
  40. delete array[i];
  41.  
  42. delete [] array;
  43. }
  44. cout << "\n\n";
  45. {
  46. vector<unique_ptr<A>> array;
  47. array.emplace_back(new B);
  48. array.emplace_back(new C);
  49. array.emplace_back(new A);
  50. }
  51. }
  52.  
  53.  
Success #stdin #stdout 0s 5444KB
stdin
Standard input is empty
stdout
B::~B()
A::~A()
C::~C()
A::~A()
A::~A()


B::~B()
A::~A()
C::~C()
A::~A()
A::~A()