부재 : 단독 연산자 보단 =이 붙은 연산자가 대체적으로 효율적이였다!
이유
1. 일반적으로 대입 형태 연산자는 단독 혀애 연산자보다 효율적이다. 왜냐하면, 단독 형태 연산자는 새 객체를 반환하는 형식으로 만들어야 하지만, 대입 형태 연산자는 왼쪽 인자에다가 처리 결과를 기록하기 때문에, 이 연산자의 반환값을 담을 임시 객체를 만들어 놓을 필요가 없기 때문이다.
2. 포인터는 대입 형태 연산자와 단독 형태 연산자를 동시에 제공함으로써 클래스 사용자에게 효율과 편리성을 경우에 따라 저울질할 기회를 줄수 있다는 것
예)
result = a + b + c+ d; // 세 개의 임시 객체가 사용되는데 임시 객체 하나마다 operator+가 호출된다.
Or
result = a; // 임시 객체가 필요 없다.
result += b; // 임시 객체가 필요 없다.
result += c; // 임시 객체가 필요 없다.
result += d; // 임시 객체가 필요 없다.
3. 단독 형태 연산자(+ * 등..)를 =이 붙은 연산자(+= *= 등..)으로 구현 가능하며, 일관성을 유지 시킬수 있다.
(내부적으로 += *= 등을 수정을 하여 + * 등을 조작할수 있기 때문이다)
구현 방법
1. 1~3번의 사항을 기억해 두고, 단독 형태 연산자를 쓸 부분에 대입 형태 연산자를 써 보도록 하라
이유
1. 일반적으로 대입 형태 연산자는 단독 혀애 연산자보다 효율적이다. 왜냐하면, 단독 형태 연산자는 새 객체를 반환하는 형식으로 만들어야 하지만, 대입 형태 연산자는 왼쪽 인자에다가 처리 결과를 기록하기 때문에, 이 연산자의 반환값을 담을 임시 객체를 만들어 놓을 필요가 없기 때문이다.
2. 포인터는 대입 형태 연산자와 단독 형태 연산자를 동시에 제공함으로써 클래스 사용자에게 효율과 편리성을 경우에 따라 저울질할 기회를 줄수 있다는 것
예)
result = a + b + c+ d; // 세 개의 임시 객체가 사용되는데 임시 객체 하나마다 operator+가 호출된다.
Or
result = a; // 임시 객체가 필요 없다.
result += b; // 임시 객체가 필요 없다.
result += c; // 임시 객체가 필요 없다.
result += d; // 임시 객체가 필요 없다.
3. 단독 형태 연산자(+ * 등..)를 =이 붙은 연산자(+= *= 등..)으로 구현 가능하며, 일관성을 유지 시킬수 있다.
(내부적으로 += *= 등을 수정을 하여 + * 등을 조작할수 있기 때문이다)
구현 방법
1. 1~3번의 사항을 기억해 두고, 단독 형태 연산자를 쓸 부분에 대입 형태 연산자를 써 보도록 하라
'책 정리 > More Effective C++ 1판' 카테고리의 다른 글
항목 26 : 클래스 인스턴스의 개수를 의도대로 제한하는 방법 (0) | 2008.05.22 |
---|---|
항목 25 : 생성자 함수와 비멤버 함수를 가상 함수처럼 만드는 방법 (0) | 2008.05.22 |
유용하고 재미있는 프로그래밍 기법들(Techniques) (0) | 2008.05.22 |
항목 24 : 가상 함수, 다중 상속, 가상 기본 클래스, RTTI에 들어가는 비용을 제대로 파악하자 (0) | 2008.05.22 |
항목 23 : 정 안 되면 다른 라이브러리를 사용하자! (0) | 2008.05.22 |
항목 21 : 오버로딩은 불필요한 암시적 타입변환을 막는 한 방법이다. (0) | 2008.05.20 |
항목 20 : 반환값 최적화가 가능하게 하자. (0) | 2008.05.20 |
항목 19 : 임시 객체의 원류를 정확히 이해하자. (0) | 2008.05.20 |
항목 18 : 예상되는 계산 결과를 미리 준비하면 처리비용을 깍을 수 있다. (0) | 2008.05.20 |
항목 17 : 효율 향상에 있어 지연 평가는 충분히 고려해 볼 만하다. (0) | 2008.05.20 |
최근댓글