항목 17. operator=에서 재귀치환을 검사한다.
이유
1. 효율성 때문이다.
- 같은 값이면 대입할 필요가 없다
2. 정확함을 때문이다. 항목11 참조
(동적메모리 할당시 기존의 값이 있다면 날리고 해야 한다, 무결성을 보증하기 위해서다)
해결 방법
포인터의 값을 체크
- 효율도 높고 확실하다.
- 또한 포인터 안으로 들어가서 세밀체크도 가능하다.
- 강추! 2008/06/01 19:52 수정
인자로 들어온 값을 그대로 복사하고, 교체한다.(copy and swap 기법)
주의 사항
1. 객체를 기본자료형처럼 만드는것은 까다로우니, 가능성을 항상 고려해라
개인적 생각
1. 해결 방법 으로 우선 체크한다.
2. 객체의 아이디가 있을경우 아이디로 체크한다.(아이디같은 개념의 데이터)
이렇게 두가지를 고려하고, 각각의 생성자와 operator= 에 대해서 염두해둔다.
2008/06/01 19:52 : Effective C++ 2판과 다르다. 정확하게는 포인터의 값 체크가 유용할 때가 있는데, 자기 복사를 많이 할 경우와 특정값만을 비교해야만 할때는 .. 포인터를 이용한 체크가 더 좋다.
이유
1. 효율성 때문이다.
- 같은 값이면 대입할 필요가 없다
2. 정확함을 때문이다. 항목11 참조
(동적메모리 할당시 기존의 값이 있다면 날리고 해야 한다, 무결성을 보증하기 위해서다)
해결 방법
포인터의 값을 체크
- 효율도 높고 확실하다.
- 또한 포인터 안으로 들어가서 세밀체크도 가능하다.
- 강추! 2008/06/01 19:52 수정
인자로 들어온 값을 그대로 복사하고, 교체한다.(copy and swap 기법)
주의 사항
1. 객체를 기본자료형처럼 만드는것은 까다로우니, 가능성을 항상 고려해라
개인적 생각
1. 해결 방법 으로 우선 체크한다.
2. 객체의 아이디가 있을경우 아이디로 체크한다.(아이디같은 개념의 데이터)
이렇게 두가지를 고려하고, 각각의 생성자와 operator= 에 대해서 염두해둔다.
2008/06/01 19:52 : Effective C++ 2판과 다르다. 정확하게는 포인터의 값 체크가 유용할 때가 있는데, 자기 복사를 많이 할 경우와 특정값만을 비교해야만 할때는 .. 포인터를 이용한 체크가 더 좋다.
'책 정리 > Effective C++ 2판' 카테고리의 다른 글
항목 21. 가능한 const를 이용한다. (0) | 2008.05.10 |
---|---|
항목 20. 데이터 멤버를 공용 인터페이스에 포함시키지 않는다. (3) | 2008.05.09 |
항목 19. 멤버 함수, 비멤버 함수 및 프렌드를 구별한다. (0) | 2008.05.09 |
항목 18. 최소한의 완전한 클래스 인터페이스를 구축한다. (0) | 2008.05.09 |
3부, 클래스와 함수 : 설계 및 선언 (0) | 2008.05.08 |
항목 16. operator=에서 모든 데이터 멤버들로의 치환을 수행한다. (0) | 2008.05.08 |
항목 15. operator= 이 *this에 대한 레퍼런스(reference)를 리턴(return)하도록 한다. (0) | 2008.05.08 |
항목 14. 베이스 클래스에서 소멸자는 가상 함수로 선언해야 한다. (0) | 2008.05.08 |
항목 13. 클래스에 선언된 순서에 따라 멤버 초기화 리스트에 멤버들을 나열한다. (0) | 2008.05.07 |
항목 12. 생성자에서 치환보다는 초기화를 사용한다. (0) | 2008.05.07 |
최근댓글