fork download
  1. #include <cstdio>
  2. using namespace std;
  3.  
  4. struct Foo {
  5. int a;
  6. Foo(const Foo& foo) : a(foo.a + 1) {
  7. printf("Foo(Foo& foo) a == %d\n", a);
  8. }
  9. Foo(int x) : a(x) {
  10. printf("Foo(int) a == %d\n", a);
  11. }
  12. ~Foo() {
  13. printf("~Foo() a == %d\n", a);
  14. a = 0;
  15. }
  16. };
  17.  
  18. auto fooRef(const Foo& f) {
  19. return f;
  20. }
  21.  
  22. int main() {
  23. const Foo& ref = fooRef(Foo(2));
  24. printf("ref.a == %d\n", ref.a);
  25. printf("end of main\n");
  26. return 0;
  27. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
Foo(int) a == 2
Foo(Foo& foo) a == 3
~Foo() a == 2
ref.a == 3
end of main
~Foo() a == 3