항목 16. operator=에서 모든 데이터 멤버들로의 치환을 수행한다.
이유
1. 재정의했었다면, 클래스 업그레이드 후 값을 변경안하면 안들어 간다.
2. 상속 관계의 값이 operator=으로 정상적으로 들어가지 않는다.
해결 방법
1. 업그레이드 하면 주의깊게 다시 정의 할것 2008/06/01 19:52 수정 수정
2. 상속관계일때는 자식의 생성자의 초기화 값자체를 인자로써 부모클래스의 생성자를 호출하면 정상적으로 된다.
1. 포인터의 깊은 복사가 필요없다면, 오히려 정의하지 않는 편이 더 좋다.(일일이 변경하지 않아도 되니까!)
주의 사항
1. 1번이 주의 사항이다. 2008/06/01 19:52 수정 수정
1. 만약 정의해아만 한다면, 반드시 operator=을 상황에 맞게 정의해야 한다!
개인적인 생각
1. 깊은 복사가 아니라면, 상속관계라 할지라도 자동으로 값이 들어간다.
- 테스트 했다. 책 자체가 1998년도에 작성된것이라 이런 주의 사항이 있었던거 같다. 하지만 이런것은 알고 넘어가야 한다. 과거의 지식을 쌓아올려 현재의 지식을 만드는거니까 (2008/06/01 19:52 내가 한말 맞아? .. 어디서 주워 들었지... 멋지다!)
이유
1. 재정의했었다면, 클래스 업그레이드 후 값을 변경안하면 안들어 간다.
2. 상속 관계의 값이 operator=으로 정상적으로 들어가지 않는다.
해결 방법
1. 업그레이드 하면 주의깊게 다시 정의 할것 2008/06/01 19:52 수정 수정
2. 상속관계일때는 자식의 생성자의 초기화 값자체를 인자로써 부모클래스의 생성자를 호출하면 정상적으로 된다.
1. 포인터의 깊은 복사가 필요없다면, 오히려 정의하지 않는 편이 더 좋다.(일일이 변경하지 않아도 되니까!)
주의 사항
1. 1번이 주의 사항이다. 2008/06/01 19:52 수정 수정
1. 만약 정의해아만 한다면, 반드시 operator=을 상황에 맞게 정의해야 한다!
개인적인 생각
1. 깊은 복사가 아니라면, 상속관계라 할지라도 자동으로 값이 들어간다.
- 테스트 했다. 책 자체가 1998년도에 작성된것이라 이런 주의 사항이 있었던거 같다. 하지만 이런것은 알고 넘어가야 한다. 과거의 지식을 쌓아올려 현재의 지식을 만드는거니까 (2008/06/01 19:52 내가 한말 맞아? .. 어디서 주워 들었지... 멋지다!)
'책 정리 > Effective C++ 2판' 카테고리의 다른 글
항목 20. 데이터 멤버를 공용 인터페이스에 포함시키지 않는다. (3) | 2008.05.09 |
---|---|
항목 19. 멤버 함수, 비멤버 함수 및 프렌드를 구별한다. (0) | 2008.05.09 |
항목 18. 최소한의 완전한 클래스 인터페이스를 구축한다. (0) | 2008.05.09 |
3부, 클래스와 함수 : 설계 및 선언 (0) | 2008.05.08 |
항목 17. 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 |
항목 11. 동적으로 할당되는 메모리를 갖는 클래스를 위해서는 복사 생성자와 치환 연산자를 선언하라 (0) | 2008.05.07 |
최근댓글