프로그래밍/Effective C++
자기대입 처리(effective c++ 11)
엘레멘탈키스
2015. 8. 7. 01:32
자기대입(self assignment)
어떤 객체가 자기 자신에 대해 대입 연산자를 적용하는 것
프로그램 작성 중에 자기 자신이 대입되지 않는다는 보장이 없다.
문제점
해당 코드에서 operator에 자신이 other에 들어오게 되면?
자기 자신인지 모르고 해제해버리고 나중에 이 값을 참조하게 되는 현상이 생길 수 있다.
일치성 검사기법
현재 this와 other가 일치한지를 검사한다.
예외에 안전한 기법
애초에 예외가 일어나지 않게 코드의 순서를 바꿔 자기대입으로 인한 문제를 방지한다.
복사 후 맞바꾸기
임시객체를 만들어 swap하는 방식.
728x90
반응형