2017. 10. 15. 16:17 C++/공부
C++] 기초(9) - 참조자 반환 함수 사용 시
** 본 게시물은 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을 바로 출력하여 우연치않게 쓰레기 값이 일치 할 수도 있으므로 조심하자.
'C++ > 공부' 카테고리의 다른 글
C++] 기초(11) - 캡슐화(Encapsulation) (0) | 2017.10.15 |
---|---|
C++] 기초(10) - 정보은닉(Information Hiding) (0) | 2017.10.15 |
C++] 기초(8) - 참조자와 Call-by-reference (0) | 2016.12.14 |
C++] 기초(7) - 참조자(Reference) (0) | 2016.12.08 |
C++] 기초(6) - const 키워드 (0) | 2016.12.08 |