항목 1 : 포인터와 참조자를 구분하자.

개념 정리
포인터(pointer)는 NULL 을 가질수 있다.
참조자(reference)는 NULL 을 가질수 없다.

그렇기 때문에 C++ 스펙에는 참조자는 선언과 동시에 정의해야 한다.
그리고 참조자는 초기에 참조하고 있는것만 참조 할수 있으며, 다른 객체로 바꿀수 없다.

이유
1. 더 효율적인 코딩이 가능해 진다.

해결 방법
1. 각각 어떨때 쓰는지 알아 두어야 한다.

포인터(pointer)는 가리키는 객체의 주소가 없을 때가 있거나, 하나의 포인터로 여러개의 객체를 가리킬 필요가 있을 때
참조자(reference)는 가리키는 객체의 주소가 시작부터 끝까지 있거나, 오직 한개의 객체만 가리킬 때

여기에 참조자(reference)를 쓸때가 한가지 더 있다.
operator 함수를 정의할때 좌변의 객체에 쓸 수 있는 값을 반환해 줄때 사용하면 효과적이다.
예) operator [] 일때

vector<int> v(10);
v[5] = 10; <-- 여기서 operator []는 레퍼런스(*this 로 반환하고 반환타입을 &로 하게 된다)
이렇게 효율적으로 사용 할수가 있다.

개인적인 생각
1. More Effective C++ 는 Effective C++ 수준과 비슷하다.
2. Effective C++ 2판보다 더 깔끔해진 번역을 볼수 있었다.
3. 레퍼런스에 대해서 새로운 사실을 알게 된 것만으로도 기쁘다!


이 책 좋다!
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요