자기대입 처리(effective c++ 11)

2015. 8. 7. 01:32프로그래밍/Effective C++

728x90
728x90

자기대입(self assignment)

어떤 객체가 자기 자신에 대해 대입 연산자를 적용하는 것

프로그램 작성 중에 자기 자신이 대입되지 않는다는 보장이 없다.


문제점
해당 코드에서 operator에 자신이 other에 들어오게 되면?
자기 자신인지 모르고 해제해버리고 나중에 이 값을 참조하게 되는 현상이 생길 수 있다.



일치성 검사기법

현재 this와 other가 일치한지를 검사한다.




예외에 안전한 기법

애초에 예외가 일어나지 않게 코드의 순서를 바꿔 자기대입으로 인한 문제를 방지한다.


복사 후 맞바꾸기

임시객체를 만들어 swap하는 방식.


728x90
반응형