자기대입 처리(effective c++ 11)
2015. 8. 7. 01:32ㆍ프로그래밍/Effective C++
728x90
728x90
자기대입(self assignment)
어떤 객체가 자기 자신에 대해 대입 연산자를 적용하는 것
프로그램 작성 중에 자기 자신이 대입되지 않는다는 보장이 없다.
문제점
해당 코드에서 operator에 자신이 other에 들어오게 되면?
자기 자신인지 모르고 해제해버리고 나중에 이 값을 참조하게 되는 현상이 생길 수 있다.
일치성 검사기법
현재 this와 other가 일치한지를 검사한다.
예외에 안전한 기법
애초에 예외가 일어나지 않게 코드의 순서를 바꿔 자기대입으로 인한 문제를 방지한다.
복사 후 맞바꾸기
임시객체를 만들어 swap하는 방식.
728x90
반응형
'프로그래밍 > Effective C++' 카테고리의 다른 글
자원관리 클래스의 복사 동작에 대해(effective c++ 14) (0) | 2015.08.12 |
---|---|
템플릿으로 만들어진 기본 클래스 접근하기(effective c++ 43) (0) | 2015.08.07 |
자원 관리는 객체가 그만(effective c++ 13) (0) | 2015.08.07 |
대입 연산자 *this 반환(effective c++ 10) (0) | 2015.08.07 |
객체 생성과 소멸에 가상함수 호출하지 않기(effective c++ 09) (0) | 2015.08.02 |
소멸자와 예외처리(effective c++ 08) (0) | 2015.08.02 |
다형성 가진 기본 클래스의 가상 소멸자(effective c++ 07) (0) | 2015.08.02 |