언어 자료구조 알고리즘/Escort C++

[C++] 연산자 중복 정의

언제나휴일 2016. 4. 15. 14:59
반응형

7.1 연산자 중복 정의

 

 연산자 중복 정의란 "피연산자 중에 최소 하나 이상이 사용자 정의 형식일 경우에 해당 연산에 대한 기능을 정의하는 것"을 말합니다. (참고로, 포인터 형식은 사용자 정의 형식이 아닙니다.)

 

 C++에서 연산자 중복 정의를 지원하는 이유는 사용자로서 ==와 같은 연산자를 사용하는 것이 IsEqual이라는 메서드를 사용하는 것보다 더 직관적일 수 있기 때문입니다. 하지만 사용자가 생각하는 것과 제공자의 의도가 서로 다르다면 오히려 이는 신뢰성이 떨어지고 유지 보수 비용이 늘어나게 되는 요인이 될 수가 있습니다. 이러한 이유로 모든 OOP언어에서 연산자 중복 정의를 문법적으로 지원하는 것은 아닙니다. 그리고 이를 지원하는 언어들도 사용자가 연산자 중복 정의를 할 때 지켜야 하는 수준이 조금씩 다릅니다.

 

 여러분은 연산자 중복 정의 문법을 이용할 때 언어에서 요구하는 문법 수준이 까다롭지 않으면 언어에서 제공하는 유연성을 효과적으로 활용할 필요가 있지만 이에 따르는 모든 신뢰성에 관한 책임을 개발자가 가져야 한다는 점에 유의하시기 바랍니다. 이를 위해 언제나 연산자 중복 정의하는 것이 해당 연산이 상징하는 의미와 객관적으로 보았을 때 일치하는지 고민을 할 필요가 있습니다.

 

 C++언어에서 연산자 중복 정의에서는 피연산자 중에 최소 하나 이상이 사용자 정의 형식이어야 한다는 것과 피연산자의 개수를 지키는 범위에서 대부분 허용하고 있습니다. 기본적인 사항은 다음과 같습니다.

 

- 피연산자 중에 최소 하나는 사용자 정의 형식이어야 한다.

- 기본적으로 함수 중복 정의의 규칙을 따른다.

- 피연산자의 개수를 바꿀 수 없다.

- 모든 연산에 대해 중복 정의할 수 있는 것은 아니다.

- 연산자 우선 순위를 변경할 수 없다.

- 연산자 중복 정의는 전역 스코프와 클래스 스코프에서 할 수 있다.

- 논리적으로 연산 행위에 맞는 지에 대한 여부에 대한 판단을 컴파일러가 하지 않는다.


7장 산자 의 Part1

7장 산자 의 Part2

(모든 동영상 강의는 무료입니다.)

반응형