fork download
  1. #include <stdio.h>
  2. class A
  3. {
  4. public:
  5. A() { printf("ctor %X\n", this); }
  6. A(const A& v) { printf("copy %X=%X\n", this, &v); *this=v; }
  7. int v, v2;
  8. };
  9.  
  10. A fn(A v) { printf("fn %X\n", &v); v.v=9; return v; }
  11. A fn2(A v) { printf("fn2 %X\n", &v); return fn(v); }
  12. int main(){
  13. printf("Test 1\n");
  14. A a;
  15. A b = fn(a);
  16. printf("addr=%X\n", &b);
  17. printf("Test 2\n");
  18. A c = fn(A());
  19. printf("addr=%X\n", &c);
  20. printf("Test 3\n");
  21. A d = fn2(A());
  22. printf("addr=%X\n", &d);
  23. }
  24.  
Success #stdin #stdout 0s 2828KB
stdin
Standard input is empty
stdout
Test 1
ctor BFA3BD28
copy BFA3BD18=BFA3BD28
fn BFA3BD18
copy BFA3BD20=BFA3BD18
addr=BFA3BD20
Test 2
ctor BFA3BD08
fn BFA3BD08
copy BFA3BD10=BFA3BD08
addr=BFA3BD10
Test 3
ctor BFA3BCF8
fn2 BFA3BCF8
copy BFA3BCC8=BFA3BCF8
fn BFA3BCC8
copy BFA3BD00=BFA3BCC8
addr=BFA3BD00