&& || 등의 논리연산을 오버로딩 오버라이딩 하면 안돼는 이유
2014. 5. 13. 12:01ㆍ프로그래밍
반응형
SMALL
논리연산 중에는 앞 조건식의 결과에 따라 뒤 조건식의 실행 여부를 결정하는 구조의 연산식이 있다.
원하는 조건을 앞에 부분에서 이미 만족하면 뒤의 것은 보나마나 같은 결과일때, 뒤의 연산을 생략하여 프로그램의 속도를 개선하는 방식의 연산으로 쇼트서킷(Short-circuit)이라고 한다.
바로 이런 조건 때문에 &&나 ||같은 연산은 앞조건에서 이미 뒤의 연산이 어떻든 참거짓값이 명확하게 판명되는 경우, 뒤의 연산을 아예 생략하는데
만약 &&나 ||를 재정의 하여 사용하려 했을 경우, 위와같은 경우가 생기면 뒤의 연산을 생략해버려서 개발자가 예상하지 못한 Skip이 일어날 수 있다.
결론은 논리연산자 오버로딩,오버라이딩은 가능은하지만 하지 않는 것이 원칙인데...
논리연산의 쇼트서킷의 특성까지 명확하게 판명하고 개발자가 구현하려는 코드도 같은 방식으로 스킵을 진행한다면 (경우의 수를 개발자가 모두 예상가능한 경우라면) 재정의 해서 사용해도 되지 않을까...
그렇지만 굳이 재정의하지 않고 새로운 함수나 디파인을 구현하는 것이 어떨지...
반응형
LIST
'프로그래밍' 카테고리의 다른 글
뷰포리아 카메라로 얻은 이미지를 ZXing 으로 QR마크 decode할 때 주의할점 (0) | 2017.10.31 |
---|---|
C# List 정렬 ,검색, 삭제 (1) | 2015.05.06 |
Import와 include의 차이점.. (0) | 2014.05.13 |
fatal error C1189 (0) | 2013.08.20 |