반응형

Reference Variable

(c++11, L-value reference)

L-value, 기존 메모리 공간(변수) 대한 별명을 만들어 변수처럼 쓴다,

별명만 붙이는 것이기 때문에, 메모리 주소는 동일한 공간을 쓴다

Reference(참조)라는 뜻에서 있듯이, 어떤 변수를 참조하게 만들어 준다

typedef 다르다(typedef 자료형에 별명을 주는것)

 

선언법

 

자료형& 레퍼런스식별자 = 변수;

 

 

pass by reference 할때 포인터 대신에 사용할 있다,

하지만 포인터와는 다르다, 구지 포인터를 Reference Variable 비슷하게 쓴다면

 

자료형 * const ptr = &변수;

비슷한 모양이다, 선언시에 정해진, 가리키고 있는 변수의 주소를 수정 없다

그러나 포인터는 주소가 가리키는 값에 접근하기 위해 indirection operator(역참조)* 사용하지만

Reference Variable 역참조를 없다,

 

int main()

{

    int a = 8;

    int &a_ref = a; // 포인터와 다르게 &a 대입하지 않음

 

    std::cout << a_ref << std::endl; // 결과는 8 나옴

    return 0;

}

 

R-value Reference

(c++11)

c++11 부터 move semantic 개념이 도입되면서, 기존 refernce variable

L-value refernce, R-value reference 나뉘게 되었다

 

선언법
 

자료형&& 레퍼런스식별자 = R-value;

 

 

비교 연산자(&&)와는 아무 관련 없음

R-value 대입할 있다, 식별자가 없는 값들만 대입 있다.

 

R-value, 즉 곧 사라지는 값, 식별자가 없는 값만 대입 할 수 있다.

 

 

R-value reference parameter

 

 

이때 20번라인 doSomething L-value 인자로 받고

21번라인 doSomething R-value 인자로 받았다

반응형

+ Recent posts