포스트를 만든 목적 심심해서... 내용 C++을 보았다면, 클래스 내부 객체를 레퍼런스나 포인터로 뽑아 내는게 껄끄럽다는 건 알고 있을 것이다. 그러므로 이 껄끄러운 것을 시원하게 없애 줄 방법들 몇가지에 대해서 정리한다. 왜 껄끄러운가? .. 사생활에 간섭 받으면 껄끄러운 것과 같다. 어디에서든지 개입시킬 수 있는건 ... 어디에서든지 버그가 발생할 수 있다는 의미와 똑같기 때문이다. 어떻게 대처 해야 하는가? 밖으로 사생활을 보여주지 않으면 그만이지만, 살다보면 안 될 수도 있다. 그래서 대충 4가지 정도 내숭이 있다. value 타입을 이용하기 immutable 타입 사용하기 읽기용 interface 이용하기 읽기용 wapper 이용하기 결론 reference를 반환할 땐, 내숭을 부리자. 여담 ...
Reference 검색 결과
Purpose-built post 공부하려고 정리하는 김에 올린다. Content 인터넷에서 다른 사람들이 정리한 것을 인용 하려고 했지만, 마땅히 인용할 꺼리를 찾지 못했다. 요세들어 의자에 앉는게 힘들(.. 대부분 잠을 자기 때문에)어서 정리하는게 싫었건만, 결국 피해 갈 수 없었다. 제목 그대로, "구분하라" 인데, 어떻게 구분 해야 할까? 저자는 C++ 과 자바의 이야기를 하면서 "왜 두 타입이 존재하는지" 를 설명한다. 자바는 모두 reference 타입이기 때문에, 속도가 느리다 라고 하고, C++ 에선 모든 타입이 value 형태로 전달 되기 때문에 partial copying - slicing the object(부분 복사 - 객체 잘림) 문제가 있다고 지적한다. 개인적인 생각으로, .. ..
'값에 의한 전달' 이란 무엇을 뜻하는 것일까? 함수에 전달되는 인자를 복사하여 전달되는 방식 '상수객체 참조자에 의한 전달'이란 무엇을 뜻하는 것일까? 포인터나 레퍼런스 즉 * 나 & 로 전달하는 방식을 뜻한다. 상수 이므로 const type * 나 const type& 을 뜻한다. 둘의 차이점이 있다면 무엇일까? 복사 할때 들어가는 비용에 차이가 있다. 값에 의한 전달은 전달되는 인자의 크기가 크면 클 수록 복사 되는 비용이 점점 많이 지불해야 할것이다. 하지만 상수객체 참조자는 주소값인 4Byte(64bit 환경에선 8Byte)의 비용만 지불하면 되기 때문에 그 비용은 일정하다. 또한 참조에 의한 전달 방식은 슬라이싱 문제(복사 손실 : Slicing problem)가 없어진다. 그렇다면 무엇이 ..
항목 1 : 포인터와 참조자를 구분하자. 개념 정리 포인터(pointer)는 NULL 을 가질수 있다. 참조자(reference)는 NULL 을 가질수 없다. 그렇기 때문에 C++ 스펙에는 참조자는 선언과 동시에 정의해야 한다. 그리고 참조자는 초기에 참조하고 있는것만 참조 할수 있으며, 다른 객체로 바꿀수 없다. 이유 1. 더 효율적인 코딩이 가능해 진다. 해결 방법 1. 각각 어떨때 쓰는지 알아 두어야 한다. 포인터(pointer)는 가리키는 객체의 주소가 없을 때가 있거나, 하나의 포인터로 여러개의 객체를 가리킬 필요가 있을 때 참조자(reference)는 가리키는 객체의 주소가 시작부터 끝까지 있거나, 오직 한개의 객체만 가리킬 때 여기에 참조자(reference)를 쓸때가 한가지 더 있다. op..
최근댓글