코드없는 프로그래밍 유튜브가 생각나서 오늘은 기본이 되는 pass by value vs pass by reference vs pass by pointer를 다뤄 볼려고한다.
함수에 argument (함수에 인풋으로 들어가는것들) 를 넘겨주는 방식은 3개지가있는데 value, reference , pointer 가있다.

- 여기서 a 는 value가 넘어간것이고
- 이 함수에서는 포인터가
- 이 함수에서는 & 가 넘어가서 argument가 넘어간것이다.

이어지는 R-value와 L-value 의 설명
이 두 개념은 c++ 에만 있는 고유개념으로 OOP하기전에 알아야하는 유용한 개념
L-Value : 바뀔 수 있는 값이고
R-value : 바뀌지않는 고정값이다.
자 이제 pointer(stack)가 heap 공간을 가리킬때 memory view로 어떻게 복사 및 생성이 되는지 예제정리.

카피가 2번일어나게되고
카피가 1번
카피가 0번 일어나 메모리 측면해서 절약했다고 볼수있음. &&의 표시는 R-value라는 뜻으로 a값은 바뀌지않는 값이 들어가야한다. 근데 storeByRRef(aa)라고 적어버리면 이미 aa는 "abc"로 바뀐값이므로 l-value여서 오류가뜸. 이를 가능하게해주는것은 std::move() 함수로 l value값을 R-value값으로 변환시켜 컴파일을 가능하게 해준다.!



정리해야지 정리해야하지 하고 막상 할려니 너무 어려운! 드디어 정리완료!
'Language > C++' 카테고리의 다른 글
| [c/c++] Pointers to Arrays && Arrays as function arguments (0) | 2022.11.29 |
|---|---|
| [c++] 깊은 복사(Deep copy)와 얕은 복사(shallow copy) (0) | 2022.11.23 |
| [c++][pointer, reference 정복 1] Memory Layout in C (0) | 2022.11.16 |
| [Geeks][Reference] References in C++ (0) | 2022.11.15 |
| [oop in C++] Static members (0) | 2022.10.12 |
댓글