KPlay의 코딩 그리고 잡동사니

C++에는 두 가지 형태의 Call-by-reference가 존재한다.

(Call-by-reference란 외부에 있는 메모리 공간에 접근 가능하다는 의미이다)

하나는 "주소 값"을 이용하는 형태이며, 다른 하나는 "참조자"를 이용하는 형태이다.

이렇게 매개변수에 참조자가 와서 포인터와 같이 외부 메모리 공간에 접근해서 swap함수를 만들 수 있다.

여기서 참조자는 선언과 동시에 초기화가 되어야 한다고 했는데 매개변수 선언만해주면

안되는거 아니냐 할 수 있는데 매개변수는 함수가 호출됨과 동시에 선언되고 인자값을 전달받아 바로 초기화된다.

따라서 선언과 동시에 초기화 되기 때문에 문제 없다.

그런데 이 때문에 함수의 호출형태만 보면 값이 전달되는지 참조자가 전달되는지 알 수 없다.

또한 정의형태를 본다고 하더라도 몸체를 보지 않으면 값의 변경유무 또한 알 수 없다.

그래서 const 참조자가 등장한다

가령 void HappyFunc(const int &ref) { ...}

라는 선언이 오면 이 ref참조자는 참조만 할 뿐 이것으로 값의 변경을 허용하지 않겠다는 의미가 된다.

const참조자 선언으로 인해

1. 함수의 원형 선언만 봐도 값의 변경이 일어나지 않음을 판단할 수 있다.

2. 실수로 인한 값의 변경이 일어나지 않는다

라는 두가지 장점이 있다.

'프로그래밍 언어 > C++' 카테고리의 다른 글

malloc & free를 대신하는 new & delete  (0) 2020.10.05
참조자와 함수2  (0) 2020.10.05
참조자의 선언 가능 범위  (0) 2020.10.05
참조자  (0) 2020.10.05
이름공간의 별칭 지정과 전역변수의 접근  (0) 2020.10.04

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band