참조( reference )는 수동적, 묵시적인 순응. 즉, 컴파일러의 추론을 바탕으로 접근하는 것을 말한다.
some_class( some_struct ).member 와 같은 경우 ( . 기호 ),
그리고 타입을 선언 할 때 rvalue의 내용에 접근할 수 있게 참조하라는 의미로 사용하는 & 기호 같은 경우지.
역참조( dereference )는 능동적, 명시적인 지시. 즉 주소를 거슬러올라가도록( indirec-tion ),
( 혹은 다른 표현으로 ) 포인터 타입의 값을 목표물의 주소로 해석해서( through ) 접근하라는 지시를 말한다.
*, -> 와 같은 기호의 경우지.
자바와 같은 언어에선 포인터가 존재하지 않으니 개발자의 작위적, 명시적, 능동적인 접근이 불가, 참조만 존재하는 것이고.
-> 기호 같은 경우는 꽤나 눈가리고 아웅하는 ( 충분히 컴파일러가 처리할 수 있는데도 ) 저딴거 왜있는지 모를 기호고,
그래서 내가 C/C++ 에서 안타깝게 생각하는 부분이기도 한데,
그게 포인터와, 상수포인터인 배열의 배열첨자기호( [ ] ) 공용에서 ( 거기다 연산자 오버로딩까지 ) 비롯된 혼란 때문이기도 하고,
포인터에 대해 명시적인 접근이 가능한 pascal언어에서도 필요없는 -> 기호가 C / C++ 에 존재하는 이유지.
댓글 0