fork download
  1. #include <iostream>
  2.  
  3. class Foo {
  4. const char* m_name;
  5. public:
  6. Foo(const char* name) : m_name(name) { std::cout << "Foo(" << m_name << ")\n"; }
  7. ~Foo() { std::cout << "~Foo(" << m_name << ");\n"; }
  8. };
  9.  
  10. Foo g_globalFoo("global");
  11.  
  12. void x() {
  13. Foo xFoo("x");
  14. std::cout << "in x\n";
  15. }
  16.  
  17. int main() {
  18. Foo mainFoo1("main1");
  19. Foo mainFoo2("main2");
  20.  
  21. for (size_t i = 0; i < 3; ++i) {
  22. Foo forFoo("for");
  23. std::cout << "for loop iteration " << i << '\n';
  24. }
  25.  
  26. { // inner scope
  27. Foo innerFoo("inner");
  28. std::cout << "leaving inner scope\n";
  29. }
  30.  
  31. std::cout << "calling x()\n";
  32. x();
  33. std::cout << "back from x(), ending program\n";
  34.  
  35. return 0;
  36. }
  37.  
Success #stdin #stdout 0s 3344KB
stdin
Standard input is empty
stdout
Foo(global)
Foo(main1)
Foo(main2)
Foo(for)
for loop iteration 0
~Foo(for);
Foo(for)
for loop iteration 1
~Foo(for);
Foo(for)
for loop iteration 2
~Foo(for);
Foo(inner)
leaving inner scope
~Foo(inner);
calling x()
Foo(x)
in x
~Foo(x);
back from x(), ending program
~Foo(main2);
~Foo(main1);
~Foo(global);