Call by value in Polyglot
"자바는 call by value 입니다."
자바는 객체를 가르키는 레퍼런스라는 개념이 있는것이지, 이게 함수의 매개변수로 넘어갈때는
call by value 로 넘어갑니다. 즉 레퍼런스 그 자체가 deep copy 되어 넘어갑니다.
언어별 정리
C : call by value ( 포인터 그 자체도 매개변수로 넘어갈때 value 복사됨, clone copy 됨 )
C++ : call by value ( "& 레퍼런스" 일 경우 call by reference , 즉 clone copy 하지 않음 )
Java : call by value ( 레퍼런스 그 자체도 매개변수로 넘어갈때 value 복사됨, , clone copy 됨 )
C# : call by value ( "ref" 키워드 붙으면 call by reference , 즉 clone copy 하지 않음 )
Python : call by value ( python은 모두 객체이기때문에, call by object 라 불리지만, 이 글에서는 이해를쉽게하고자 저렇게 말함, 즉 자바의 객체 레퍼런스를 넘기는것과 동일 효과)
Javascript : call by value ( 자바,파이썬과 동일)
마지막으로 reference 의 구체적 정의는 각 언어에서 그것을 사용한 놈 마음이기 때문에
C++ 을 만든 사람은 그것을 어떻게 차용했는지 알아보려면 아래 링크 보시면 됩니다. ~
https://www3.ntu.edu.sg/home/ehchua/programming/cpp/cp4_PointerReference.html\