함수선언할때 앰퍼센드 & 첨부해야할때가 있잖아
그 기준을 모르겠다..
int나 double같은 기본자료형 아니면 무조건 쓴다고 생각해 복사 피하려고 하는거니까 값이 변경되면 안되니까 주로 const&임
무슨 복사를 피함?
값의 복사
int도 값 복사하는데
x86일땐 4byte x64일땐 8byte기준으로 그것보다 크면 레퍼런스나 포인터로 넘겨서 cpu 한틱보다 더 큰값을 복사하는걸 방지하려고한다고 아오.. 검색좀해바라
그건 걍 포인터 쓰면 되는데
정수형 배열을 예로 들었을 때 & 안쓰고 넘겨도 포인터를 넘기는데 &써서 무슨 값 복사를 피한다는거임
구조체나 클래스는 생각안함???
그리고 포인터를 써서 넘겨도 되지만, &를 써서 넘기면 null인지 체크할 필요가 없음.
구조체랑 클래스도 똑같음. 0을 넘겨도 &로 받을 수 있음
그러니까 &안쓸경우, 구조체나 클래스의 값 복사는 생각 안 하냐고... &써서 값 복사 일어나는거 피한다고..
구조체도, 클래스도 그냥 넘겼을 때 포인터를 주기 때문에 그 객체가 가지고 있는 값을 복사안한다니까 무슨 값복사를 피하는거냐고 섀도우복싱하는거임?
구조체나 클래스를 그냥 넘길 경우 포인터를 준다니... 다시 공부하고 와라.
맞는데? 나도 애매해서 디버깅해보고 온거임
멀 어떻게 테스트 했기에 그러냐??
배열의 이름이 배열 시작지점을 가리키는 포인터라는 원리와 똑같은거임
배열의 이름을 인자로 넘겼을 때 포인터가 넘어가는 것처럼, 구조체와 클래스도 마찬가지로 변수 이름이 객체의 기준점을 가리키고있고, 함수 인자로 넘겼을 때 포인터만 넘어감
int나 double같은 기본자료형 아니면 무조건 쓴다고 생각해 복사 피하려고 하는거니까 값이 변경되면 안되니까 주로 const&임
무슨 복사를 피함?
값의 복사
int도 값 복사하는데
x86일땐 4byte x64일땐 8byte기준으로 그것보다 크면 레퍼런스나 포인터로 넘겨서 cpu 한틱보다 더 큰값을 복사하는걸 방지하려고한다고 아오.. 검색좀해바라
그건 걍 포인터 쓰면 되는데
정수형 배열을 예로 들었을 때 & 안쓰고 넘겨도 포인터를 넘기는데 &써서 무슨 값 복사를 피한다는거임
구조체나 클래스는 생각안함???
그리고 포인터를 써서 넘겨도 되지만, &를 써서 넘기면 null인지 체크할 필요가 없음.
구조체랑 클래스도 똑같음. 0을 넘겨도 &로 받을 수 있음
그러니까 &안쓸경우, 구조체나 클래스의 값 복사는 생각 안 하냐고... &써서 값 복사 일어나는거 피한다고..
구조체도, 클래스도 그냥 넘겼을 때 포인터를 주기 때문에 그 객체가 가지고 있는 값을 복사안한다니까 무슨 값복사를 피하는거냐고 섀도우복싱하는거임?
구조체나 클래스를 그냥 넘길 경우 포인터를 준다니... 다시 공부하고 와라.
맞는데? 나도 애매해서 디버깅해보고 온거임
멀 어떻게 테스트 했기에 그러냐??
배열의 이름이 배열 시작지점을 가리키는 포인터라는 원리와 똑같은거임
배열의 이름을 인자로 넘겼을 때 포인터가 넘어가는 것처럼, 구조체와 클래스도 마찬가지로 변수 이름이 객체의 기준점을 가리키고있고, 함수 인자로 넘겼을 때 포인터만 넘어감