항목 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판과 다르다. 정확하게는 포인터의 값 체크가 유용할 때가 있는데, 자기 복사를 많이 할 경우와 특정값만을 비교해야만 할때는 .. 포인터를 이용한 체크가 더 좋다.
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요