지금까지 &는 변수의 주소를 얻을 때 사용했지만, &를 사용해서 변수를 정의해주면 레퍼런스 변수를 만들 수도 있다.
레퍼런스 변수를 정의할 때는 별명을 붙여주고 싶은 변수의 타입도 함께 적어주어야 한다.
int& ref = target;
레퍼런스의 경우에는 자체적인 메모리 공간은 존재하지 않고 오로지 이름만 존재한다.
#include <iostream>

using namespace std;

int main()
{
    /* 실험에 사용할 변수를 정의 */
    int target = 20;

    /* 레퍼런스 변수를 정의 */
    int& ref = target;

    /* 정보를 출력 */
    cout << "ref        = " << ref << endl;
    cout << "target     = " << target << endl;
    cout << "&ref       = " << &ref << endl;
    cout << "&target    = " << &target << endl;

    /* ref의 값을 변경 */
    ref = 100;

    /* 출력 */
    cout << "ref        = " << ref << endl;
    cout << "target     = " << target << endl;
    
    return 0;
}
  • ref는 target의 별명으로 설정
  • 둘 모두 같은 주소 즉, 같은 메모리 공간을 사용하고 있다는 것.
  • 반드시 생성할때 초기화가 필요
  • 처음 정의할때 외에는 다른 변수를 참조하게 만들 수 없다
  • 어떠한 타입의 변수라도 참조 가능
  • const 속성을 가지는 레퍼런스 변수는 자신의 값을 변경할 수 없게 된다.
    • 이러한 특징은 함수와 함께 사용할 때 유용하다.
  • 상수를 참조해야 할 때는 const속성을 가진 레퍼런스만이 가능
  • char c = 'A';
    const int& rci = c;
    int& ri = c;
    
저작자 표시
신고

'컴퓨터 언어 > C++' 카테고리의 다른 글

오버라이딩  (0) 2012.12.20
가상함수를 이용한 다형성 구현  (0) 2012.12.20
다중상속(Multiplex inheritance)  (0) 2012.12.20
접근제어 키워드  (0) 2012.12.20
포인터간의 형 변환, 레퍼런스간의 형변환  (0) 2012.12.20
레퍼런스  (0) 2012.12.20


티스토리 툴바