반응형

** 본 게시물은 C++을 복습하며 정리하는 글입니다. 틀린 부분이 있다면 지적 부탁드립니다. 현재 "윤성우의 열혈강의 C++"교재로 공부중이며 좀 더 상세한 설명을 원하시는 경우에는 책을 구매해서 찾아보시길 권장합니다.




[들어가기 전]


어떤 함수의 반환형이 참조자일 경우 int 같은 2가지 상황을 고려해야 한다.


1) 함수의 매개변수가 참조자이며 해당 함수의 반환형도 참조자일 경우

     ex) int& RefFunc(int &ref)


2) 함수의 매개변수가 그냥 변수이며 해당 함수의 반환형이 참조자일 경우

     ex) int& RefFunc(int ref)





[예제]


ex)


출력결과)

n1 : 12

ref1 : 12

=> 매개변수로 입력된 n1 변수를 RefFunc() 함수 내 ref 참조자가 Call-by-reference

     형태로 값을 변경하며, 반환된 val을 참조자 ref1이 가리킨다.

     결국 ref1은 n1을 가리키는 참조자로 인식된다.


ex)


출력결과)

n1 : 11

ref1 : 12

=> 매개변수로 입력된 n1 변수를 RefFunc() 함수 내 변수가 Call-by-value

     형태로 값을 변경하며, 반환된 val을 참조자 ref1이 가리킨다.

     결국 ref1은 RefFunc() 함수 내 val을 가리키는 참조자로 인식되며 n1을 가리키지 않음.


주의!!

RefFunc() 내의 val은 지역변수이며 함수 종료 시 자동 소멸된다.

결국 ref1은 소멸된 지역변수를 가리키게 되며, 이 경우 컴파일러 에러가 나지 않고 단지 경고창만 띄울 뿐이다. 또한, 멸중인 val을 바로 출력하여 우연치않게 쓰레기 값이 일치 할 수도 있으므로 조심하자.




반응형
Posted by tislqhf

블로그 이미지
개인적인 공부자료 정리하는 공간
tislqhf

태그목록

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.9
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함