내가 레퍼런스를 제대로 이해했는지를 테스트해보기위해서 일부러 함수에 메인에서 파라미터를 하나도 입력주지않고 함수에서 로컬변수를 밖으로 레퍼런스로 리턴하게 테스트해본거에요. 로컬변수도 그냥 소멸하는지 (물론 new 로 함수안에서 생성시키면 소멸되지 않으니 메모리 리크라는 말이 나왔을테고) 아니면 로컬변수값을 다른데다가 카피저장하고 소멸하는지 ( int fun() {…} 의 경우)그걸 이해하는게 관건인듯하네요. 함수안에서 레퍼런스를 정의하면 로컬변수값은 소멸전에 다른데로 카피저장되지만 그 레퍼런스는 카피저장되지 않고 그냥 소멸되는건지…
결론적으로 int fun() {…} 로 하면 테스트1과 테스트2가 의도한대로 실행이 제대로 되는데, 왜 int& fun() {…} 로는 로컬변수가 반환이 제대로 안될까…이게 일단 의문점이네요. 사실 메인에서 콜링 타입이 바뀌는지 &fun(); 이나 *(&fun()); 도 그냥 해봤는데 예상대로 안되네요. 확실히 fun(); 로 콜링하는건 틀린건 아닌거같아요.