[c++] C++ 연산자 오버로딩의 규칙

C++은 연산자 오버로딩을 지원하여 사용자 정의 데이터 형식에 대한 표준 연산자 동작을 변경할 수 있게 합니다. 연산자 오버로딩을 사용하면 사용자가 정의한 클래스나 구조체에 대해 새로운 연산자 동작을 정의할 수 있습니다. 그러나, 연산자 오버로딩을 사용할 때 몇 가지 규칙을 따라야 합니다. 이 포스트에서는 C++ 연산자 오버로딩의 규칙에 대해 살펴보겠습니다.

1. 기본 연산자 기호 사용

C++에서 연산자를 오버로딩할 때, 연산자에 해당하는 기호를 사용해야 합니다. 예를 들어, + 연산자를 오버로딩할 때는 operator+ 함수를 정의해야 합니다.

// + 연산자 오버로딩
ReturnType operator+(ParameterType param) {
    // 연산자 동작 정의
}

2. 매개변수와 반환 유형

연산자 오버로딩 함수의 매개변수와 반환 유형은 해당 연산자에 따라 정해져 있습니다. 예를 들어, 이항 연산자인 +의 경우에는 하나의 매개변수가 필요하며, 반환 유형은 해당 연산의 결과에 따라 결정됩니다.

3. 멤버 함수 또는 전역 함수

연산자 오버로딩 함수는 멤버 함수로 정의될 수도 있고, 전역 함수로 정의될 수도 있습니다. 멤버 함수로 정의할 경우, 해당 클래스의 인스턴스에 대해 호출되며, 전역 함수로 정의할 경우, 왼쪽 피연산자의 형식에 관계없이 호출됩니다.

4. 연산자 오버로딩과 클래스 관계

연산자 오버로딩 함수는 클래스 내부에 정의되어야 한다는 점을 제외하고는 다른 멤버 함수와 마찬가지로 정의됩니다.

이러한 규칙을 따르면 C++에서 안전하고 일관된 방식으로 연산자를 오버로딩할 수 있습니다.

참고 문헌: cplusplus.com - Operator overloading