[C++] 참조
참조에 대해 알기 전에, 우선 프로그램밍 언어의 인자 전달 방식을 알아보자인자 전달 방식크게 값에 의한 호출(call by value)방식과 주소에 의한 호출(call by address)로 구분된다.값에 의한 호출은 코드에서 함수에게 넘겨주는 실인자 값이 복사되어 전달하는 방식이다.주소에 의한 호출은 코드에서 함수에게 넘겨주는 실인자의 메모리 주소를 넘겨주는 방식이다.void swap(int a, int b){ // call by value int tmp = a; a = b; b = tmp;}void swap(int *a, int *b){ // call by address int tmp = *a; *a = *b; *b = tmp;}값에 의한 호출 방식은 값이 ..
[C++] lvalue와 rvalue 및 참조연산자
미리보는 lvalue vs rvalue종류참조메모리lvalue이름이 있다주소가 있다(메모리에 존재)rvalue이름이 없다주소를 가지지 않음(임시로만 존재)왜 이게 있어야 하는데?lvalue와 rvalue는 C++에서 메모리 모델과 값의 카테고리를 구분하기 위해 도입되었다. 식 계산 시 임시 개체를 만들고 복사·이동할 때 적용하기 위한 규칙이라고 볼 수 있다.이것은 C++11 표준에서 정의되었으며, 다이어그램으로 보면 다음과 같다.glvalue = lvalue + xvalue → 어딘가에 존재하는 값rvalue = xvalue + prvalue → 이동하거나 버려저도 되는 값lvaluelvalue의 특징으로는 메모리 위치(identity)를 갖는다는 것이다. 이름을 갖고, 주소를 가져올 수 있다& 연산자로..