C++에서 연산자 오버로딩과 관련하여 따라야 할 3가지 기본 규칙이 있습니다. 그러한 모든 규칙과 마찬가지로 예외도 있습니다. 이 3가지 규칙은 -
- 1. 연산자의 의미가 명확하지 않고 논쟁의 여지가 없는 경우에는 항상 과부하되어서는 안 됩니다. 대신 잘 선택된 이름으로 함수를 제공하십시오. 기본적으로 연산자 오버로딩에 대한 첫 번째이자 가장 중요한 규칙은 다음과 같습니다.
- 하지 마세요.
- 이상하게 보일 수 있지만 연산자 오버로딩이 적절한 경우는 소수에 불과합니다. 그 이유는 응용 영역에서 연산자의 사용이 잘 알려져 있고 논란의 여지가 없는 한 연산자의 응용 뒤에 있는 의미를 이해하기 어렵기 때문입니다.
- 2. 항상 연산자의 잘 알려진 의미를 고수하십시오. C++는 중복 연산자의 의미에 제한이 없습니다. 컴파일러는 이진 + 연산자를 구현하여 올바른 수량에서 계산하는 코드를 만족스럽게 해결할 수 있습니다. 그러나 이러한 연관 연산자의 사용자는 + b가 b에서 빼는 식을 의심하지 않을 것입니다.
- 3. 항상 관련 작업 집합 중 모든 것을 제공합니다.
- 연산자는 서로 관련되어 있으며 다른 작업과도 관련되어 있습니다. 유형이 + b를 지원하는 경우 사용자는 a +=b도 호출할 수 있을 것으로 기대합니다. 접두사 증분 ++a를 지원하는 경우 ++도 작동할 것으로 예상합니다. 그들이 b인지 여부도 확인할 수 있을 것으로 가장 확실하게 기대할 것입니다. 그들이 당신의 유형을 복사하여 구성할 수 있다면 할당도 효과가 있을 것으로 기대합니다.
- 대부분의 경우 연산자 오버로드가 필요하지 않으며 상황에 맞게 정의되고 적절할 때만 연산자를 오버로드해야 합니다. 이 게시물은 https://stackoverflow.com/a/4421708/3719089에서 영감을 받았습니다.