부재 : 효율의 복병, 임시객체
개념정리
: 임시 객체란? 이름 없는 객체로, 발생되는 경우가 두가지가 있다.
1. 함수 호출을 성사시키기 위해 암시적 타입변환이 적용 될때
2. 함수가 객체를 값으로 반환 할 때
이유
1. 불필요한 임시객체 생성은 효율에 영향을 끼치기 때문이다.
해결 방법
1. 암시적 타입변환이 일어나지 않게 한다.(설계를 바꾸던가, 비상수 객체 참조자를 넘기던가)
2. 함수가 객체를 값으로 반환 할 때는 어쩔수 없기 때문에, 컴파일러가 최적화를 맞기자.
참조
1. C++ 에서 인자값이 비상수객체 참조자일 경우 암시적 타입변환이 일어나지 않는다. 왜냐하면 참조자는 전달되는 인자값이 변경되길 바랬을때 임시객체가 변경되어 잘못된 값으로 바뀔수가 있기 때문이다.
개인적인 생각
1. 사실 타입 변환은 함수의 매개변수로 들어갈때 생성자의 모호함으로 많이 생길수 있다.
2. 코딩하는 습관 자체에 임시객체 생성 여부 파악하기 도 추가해야겠다.
개념정리
: 임시 객체란? 이름 없는 객체로, 발생되는 경우가 두가지가 있다.
1. 함수 호출을 성사시키기 위해 암시적 타입변환이 적용 될때
2. 함수가 객체를 값으로 반환 할 때
이유
1. 불필요한 임시객체 생성은 효율에 영향을 끼치기 때문이다.
해결 방법
1. 암시적 타입변환이 일어나지 않게 한다.(설계를 바꾸던가, 비상수 객체 참조자를 넘기던가)
2. 함수가 객체를 값으로 반환 할 때는 어쩔수 없기 때문에, 컴파일러가 최적화를 맞기자.
참조
1. C++ 에서 인자값이 비상수객체 참조자일 경우 암시적 타입변환이 일어나지 않는다. 왜냐하면 참조자는 전달되는 인자값이 변경되길 바랬을때 임시객체가 변경되어 잘못된 값으로 바뀔수가 있기 때문이다.
개인적인 생각
1. 사실 타입 변환은 함수의 매개변수로 들어갈때 생성자의 모호함으로 많이 생길수 있다.
2. 코딩하는 습관 자체에 임시객체 생성 여부 파악하기 도 추가해야겠다.
'책 정리 > More Effective C++ 1판' 카테고리의 다른 글
항목 24 : 가상 함수, 다중 상속, 가상 기본 클래스, RTTI에 들어가는 비용을 제대로 파악하자 (0) | 2008.05.22 |
---|---|
항목 23 : 정 안 되면 다른 라이브러리를 사용하자! (0) | 2008.05.22 |
항목 22 : 단독 연산자(op) 대신에 =이 붙은 연산자(op=)를 사용하는 것이 좋을 때가 있다. (0) | 2008.05.22 |
항목 21 : 오버로딩은 불필요한 암시적 타입변환을 막는 한 방법이다. (0) | 2008.05.20 |
항목 20 : 반환값 최적화가 가능하게 하자. (0) | 2008.05.20 |
항목 18 : 예상되는 계산 결과를 미리 준비하면 처리비용을 깍을 수 있다. (0) | 2008.05.20 |
항목 17 : 효율 향상에 있어 지연 평가는 충분히 고려해 볼 만하다. (0) | 2008.05.20 |
항목 16 : 뼈속까지 잊지 말자, 80-20 법칙 (0) | 2008.05.20 |
항목 15 : 예외 처리에 드는 비용에 대해서 정확히 파악하자 (0) | 2008.05.20 |
항목 14 : 예외지정 기능은 냉철하게 사용 하자 (0) | 2008.05.19 |
최근댓글