본문 바로가기
c++

cpp Reference(&)

by kcj3054 2021. 8. 12.
  • int func(int k) -> call by value

  • int func(int *k) -> call by pointer

  • int func(int &k) -> call by reference

cpp에서 사용하는 &는 call by value 와 call by pointer를 합쳤다고 생각하면됩니다.
왜냐? -> 내부적으로는 call by pointer이지만 접근할때 .으로 접근하여서 value 식으로 접근 할 수 있기때문입니다.

함수를 호출 하는 부분에서 1...func(person) (cf : person은 구조체 형으로 선언되었습니다.)

받는쪽에서 2...void func(Person &p)로 받으면 call by reference가 된다.

1번부분에서 묵시적 형변환이 실행되어서 기본 변수로 넣어줘도 -> &타입으로 변환 되어서 넘어간다..

별명 (Alias)

별명용 변수 &

EX :

int x = 10;
int &ref = x;

이제 ref는 x처럼 쓸 수 있습니다.

& 사용 예시1

int iValue = 1;
int *pValue = &iValue;
int *& rfpValue = pValue;

cout << *rfpValue << endl;   // -> 1이나옴
cout << rfpValue <<endl;     // 주소값이 나옴
  • & rfpValue -> 순서대로 읽으면 포인터에 대한 주소값입니다라고 해석 할 수 있습니다.
    그러므로 이것도 포인터에 대한 &이기에 포인터처럼 쓰면됩니다.

& 사용 예시2

별명에 대한 하는 대상을 변경 시킬 수 있다.

ex :

int iValue1 = 1000, iValue2 = 2000;

int &refV = iValue1;

//이후에 대상을 변경 

refV = iValue2; 
//가능하다 

'c++' 카테고리의 다른 글

오버로딩 된 new,  (0) 2022.04.09
참조 vs 포인터  (0) 2022.01.02
cpp transform  (0) 2021.12.15
static 키워드 (cpp, java)  (0) 2021.10.23
연산자 오보로딩  (0) 2021.10.23