항목 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. 레퍼런스에 대해서 새로운 사실을 알게 된 것만으로도 기쁘다!
이 책 좋다!
개념 정리
포인터(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. 레퍼런스에 대해서 새로운 사실을 알게 된 것만으로도 기쁘다!
이 책 좋다!
'책 정리 > More Effective C++ 1판' 카테고리의 다른 글
항목 9 : 리소스 누수를 피하는 방법의 정공은 소멸자이다. (0) | 2008.05.16 |
---|---|
궁극의 예외처리 (0) | 2008.05.16 |
항목 8 : new 와 delete의 의미를 정확히 구분하고 이해하자 (0) | 2008.05.15 |
항목 7 : &&, ||, 혹은 , 연산자는 오버로딩 대상이 절대로 아니다 (1) | 2008.05.15 |
항목 6 : 증가 및 감소 연산자의 전위/후위 형태를 반드시 구분하자 (0) | 2008.05.15 |
항목 5 : 사용자 정의 타입변환 함수에 대한 주의를 놓지 말자. (0) | 2008.05.15 |
항목 4 : 쓸데 없는 기본 생성자는 그냥 두지 말자. (0) | 2008.05.15 |
항목 3 : 배열과 다형성은 같은 수준으로 놓고 볼 것이 아니다. (0) | 2008.05.14 |
항목 2 : 가능한 C++ 스타일의 캐스트를 즐겨 쓰자 (0) | 2008.05.14 |
이 책은.. (0) | 2008.05.14 |
최근댓글