본문 바로가기

C++

[C++] 포인터 vs 참조(레퍼런스)

포인터와 참조는 로우레벨 개념까지 봤을 때 원리는 동일하다.

그렇기 때문에 속도도 같다. 그렇다면 어떤 것을 이용하는게 좋을까?

 

먼저 포인터와 참조의 가장 큰 차이점은 nullptr이다.

포인터는 nullptr을 가질 수 있지만 참조는 어떤 변수의 별명이기 때문에 반드시 무언가를 가리켜야 한다.

그래서 nullptr값을 가질 수 있다면 포인터, 아니라면 참조를 사용하는 것이 좋을 것이다.

 

참조를 사용하는 이유는 일단 편해서이다.

포인터는 ->로 접근해야 하는데 참조는 . 로 일반적인 방법으로 접근이 가능하다.

그렇지만 이 편한 것이 장점만 있는 것은 아니다.  . 으로 접근하기 때문에 레퍼런스인지 일반 데이터인지 헷갈릴 수 있다.

그래서 사용하는 것이 #define OUT으로  의미없는 문자열을 만들어서 참조가 매개변수로 사용될 때 참조 앞에 적는 것이다.