[C++] 참조(레퍼런스) 변수 개요

C/C++ 문법/reference2015. 12. 8. 19:41

 

※ 참조 변수 요약
필자가 신입 때 부터 정말 많이 사용해온 참조 변수는 C++에서 사용 가능한 문법이다.(C언어는 안됨)
참조 변수란, 다른 변수를 참조하는 변수로써 주로 C언어의 포인터와 비교를 많이 하고는 한다. 주로 전달 인자를 함수에 넘길때 사용되며, 구조체나 클래스와 같이 덩치가 큰 타입에 사용하여 속도를 높인다. C언어에서는 문자열이나 구조체 등과 같이 덩치가 큰 타입을 포인터로 넘기지만 C++에서는 포인터 대신에 주로 참조를 사용한다. 
문법은 다음 포스팅부터 알아보도록 하겠다.

※ 참조 변수 특징
- 주 용도는 함수의 전달 인자(매개변수)에 사용한다.
- 구조체나 클래스와 같이 덩치가 큰 타입에 사용하기 적합하다.(덩치가 큰 타입을 복사해서 넘길 경우 느리기 때문)
- 참조 변수를 전달 인자로 사용하면 포인터처럼 복사본이 아닌 원본 데이터를 가지고 작업할 수 있다. (Call by reference)

※ 참조 변수와 포인터
- 포인터와 달리 참조자에는 NULL 참조라는 개념이 없다, 고로 선언될 때 반드시 초기화 해줘야 한다.
- 포인터는 중간에 가리키는 대상을 바꿀 수 있지만, 참조자는 const와 같아서 중간에 대상을 바꿀 수 없다.
- 참조자는 반드시 초기화 해줘야 하기 때문에 포인터처럼 사용하기 전, 유효성 검사를 할 필요가 없기에 더 효율적이다.

※ 참조 변수를 사용해야 하는 경우

- 참고하고자 하는 어떤 객체를 미리 알고 있을때

- 중간에 참조하는 대상을 바꿀 일이 결코 없을때

- 포인터를 사용하면 문법상 의미가 어색해지는 연산자를 구현할때(필자는 주로 STL 컨테이너를 사용할때임)


아래는 필자가 15년 09월 쯤에 제작한 클래스다.

operator>>들의 인자를 보면 죄다 참조 변수로 되어 있는데, 이처럼 참조는 클래스를 설계할 때도 필수적으로 사용된다.


작성자

Posted by 사용자 오뇽

태그

댓글 영역

  • 프로필 사진
    잘보고갑니다
    2017.11.14 16:12

    보기 편하게 정리해주신글 잘보고갑니다.

  • 프로필 사진
    2018.01.26 11:42

    항상 잘보고 갑니다
    가독성 굳 bb