본문 바로가기

Language/C++

Pointer / Reference 차이점

우선 reference도 결국 내부적으론 Pointer를 사용하므로 작동원리는 동일하다.

하지만 차이점이 몇가지 존재한다.




Pointer


1) null값 허용

2) int *p = &a; // 대상의 주소값을 할당

3) 참조대상 변경가능



Reference


1) null값 불가능

2) int &p = a; // 참조 대상을 그대로 할당

3) 참조대상 변경불가



C++는 기본적으로 함수로부터 객체를 전달받거나 함수에 객체를 전달할 떄

Call by value 방식을 사용


이는 복사생성자로 인한 고비용의 연산, 함수 매개변수는 실제 인자의 사본을 통해 초기화, 어떤 함수를 호출한 쪽은

그 함수가 반환한 값의 사본을 돌려받음

사본 만들어 내는곳 = 복사생성자


Call by reference 사용시 객체 그대로를 전달하기 떄문에

복사생성자의 생성자, 소멸자호출이 일어나지 않아 비용이 절감된다.


원본값의 변경이 일어날 수 있으나 const를 사용하여 사전에 방지할 수 있다.




'Language > C++' 카테고리의 다른 글

POD / Standard Layout Type / Trivial Type  (0) 2019.03.03
객체초기화 ' = ' , ' ( ) ' 의 차이점  (0) 2019.03.03
const / #define / constexpr 차이점  (0) 2019.03.01
Smart Pointer  (0) 2019.03.01