이번에는 연산자 중복 정의에 관해 알아보기로 해요.
연산자 중복 정의란 하나 이상의 피연산자가 사용자 정의 형식일 때 연산 기능을 정의하는 것입니다. C++에서는 개발자는 자신이 정의한 형식을 피연산자로 사용할 때 사용하는 곳에서 연산 기호를 사용할 수 있게 연산 기능을 정의할 수 있습니다.
자신이 정의한 형식에 특정 연산의 기능을 정의하면 사용하는 개발자는 직관적으로 사용할 수 있습니다. 예를 들어 IsEqual 메서드를 제공하고 있을 때 == 연산자 중복 정의를 제공하여 사용하는 개발자는 == 연산을 사용할 수 있게 만드는 것입니다.
다음은 C++언어에서 연산자 중복 정의에 관한 사항들입니다.
– 피연산자 중에 최소 하나는 사용자 정의 형식이어야 한다.
– 기본적으로 함수 중복 정의의 규칙을 따른다.
– 피연산자의 개수를 바꿀 수 없다.
– 모든 연산을 중복 정의할 수 있는 것은 아니다.
– 연산자 우선 순위를 변경할 수 없다.
– 연산자 중복 정의는 전역 스코프와 클래스 스코프에서 할 수 있다.
그런데 컴파일러는 연산 내에서 수행하는 논리가 맞는지 판단하지 않습니다. 연산자 중복 정의를 제공하는 개발자의 생각과 이를 사용하는 개발자의 생각이 다르면 오히려 제공하지 않는 것보다 유지 보수 비용이 더 들어갈 수도 있습니다. 여러분은 다른 개발자도 자신이 정의한 것처럼 동작할 것이라고 명확하게 예견할 수 있을 때에 한정하여 연산자 중복 정의를 하세요. 그리고 포인터 형식은 사용자 정의 형식이 아니라는 점도 주의하시기 바랍니다.
이제 코드를 중심으로 연산자 중복 정의 문법을 살펴봅시다.