fork download
  1. #include <iostream>
  2.  
  3. class Base {
  4. public:
  5. Base() {
  6. std::cout << "Base()" << std::endl;
  7. }
  8. virtual ~Base() {
  9. std::cout << "~Base()" << std::endl;
  10. }
  11. };
  12.  
  13. class Derived : public Base {
  14. public:
  15. Derived() {
  16. std::cout << "Derived()" << std::endl;
  17. }
  18. ~Derived() {
  19. std::cout << "~Derived()" << std::endl;
  20. }
  21. };
  22.  
  23. int main()
  24. {
  25. std::cout << "{\n Derived a;\n}" << std::endl;
  26.  
  27. // 1
  28. {
  29. Derived a;
  30. }
  31.  
  32. std::cout << "------------------------" << std::endl;
  33. std::cout << "{\n Derived ary[2];\n}" << std::endl;
  34.  
  35. // 2
  36. {
  37. Derived ary[2];
  38. }
  39.  
  40. std::cout << "------------------------" << std::endl;
  41. std::cout << "{\n Base* p = new Derived;" << std::endl;
  42. std::cout << " delete p;\n}" << std::endl;
  43.  
  44. // 3
  45. {
  46. Base* p = new Derived;
  47. delete p;
  48. }
  49.  
  50. std::cout << "------------------------" << std::endl;
  51. std::cout << "{\n Base* ap = new Derived[2];" << std::endl;
  52. std::cout << " delete[] ap;\n}" << std::endl;
  53.  
  54. // 4
  55. {
  56. Base* ap = new Derived[2];
  57. delete[] ap;
  58. }
  59. }
  60.  
Success #stdin #stdout 0s 4428KB
stdin
Standard input is empty
stdout
{
  Derived a;
}
Base()
Derived()
~Derived()
~Base()
------------------------
{
  Derived ary[2];
}
Base()
Derived()
Base()
Derived()
~Derived()
~Base()
~Derived()
~Base()
------------------------
{
  Base* p = new Derived;
  delete p;
}
Base()
Derived()
~Derived()
~Base()
------------------------
{
  Base* ap = new Derived[2];
  delete[] ap;
}
Base()
Derived()
Base()
Derived()
~Derived()
~Base()
~Derived()
~Base()