작성
·
293
0
안녕하세요 선생님
일단 우측값을 사용할경우 어떻게 동작되는지 숙지했습니다.
우측값 사용에 대한의미도
값에대한 복사가 아닌 이동이라고하는데...
여기서 궁금한점은 굳이 && 우측값을 사용하는가 입니다.
기능적으로는 이동이라는 개념을 포인터나.. const가 아닌 레퍼런스로도 똑같이 따라할수있을거라고 생각합니다. 그 이유가 무엇인지 알수있을까요?
답변 2
0
0
말씀대로 참조는 개념적으로 그냥 주소값을 넘기는 것입니다.
우리가 원하는 오른값&&은 그보다 더 심오한 의미를 담고 있으며
어떻게 보면 [이동시킨다]는 행위는 원본 객체가
더 이상 유효하지 않아도 된다는 의미로 받아들일 수도 있습니다.
포인터를 이리 저리 넘기는 것은 동일한 객체를 여러 군데에서 [바라보는] 것이고
[이동]이라는 행위는 객체 그 자체가 여러 군데에서 관리되지 않음을 의미합니다.
예를 들어 unique_ptr을 예로 들면 정말 딱 1개만 존재해야 하는 포인터인데
이를 다른 함수에 막 복사해서 사용하면 이상하겠죠?
그러니 분명히 구분이 필요하겠죠.
참고로 &&이 꼭 우측값을 의미하진 않고
template이나 auto 등과 사용되면
보편 참조(universal reference)의 의미도 있습니다.