비교 연산자 (< =,>, == 등)는 일반적으로 기본 연산자로 구현됩니다. 나머지 비교 연산자를 구현하거나 클래스간에 가능한 모든 비교를 수행하기 위해 사용할 수 있습니까?과부하가 필요한 최소 연산자 집합은 무엇입니까?
답변
당신은 때 다음 등식 사용 ==
및 <
의 관점에서 사업자의 여섯을 구현할 수 있습니다 그들은 내가 보통 "기본적으로"때문에 그들의 굴지의 operator<
및 operator==
를 구현하고 적용 할 수있는 클래스에 대한
a != b => !(a == b)
a > b => b < a
a >= b => !(a < b)
a <= b => !(b < a)
(a == b)는 논리적으로! (a
을 표준 알고리즘 및 컨테이너.
다음으로 다른 4 가지를 구현합니다.
가끔 strcmp
의 스타일 1
, 0
, 또는 -1
을 반환하고이 측면에서 다른 모든 통신을 구현에 "비교"기능을 구현하고 고려 또 다른 방법. operator<
과 operator==
처럼 보이지 않는 코드를 많이 공유해야하는 것처럼 보이는 경우에만이 작업을 수행합니다.
일반적으로 개체에 operator==
을 구현하고 operator!=
을 구현합니다. 많은 오브젝트에는 조합 순서가 없기 때문에 비교 연산자 <, < =,>,> =은 의미가 없습니다.
또한 boost::equality_comparable
및 boost::less_than_comparable
만 사용하면 operator==
및 operator<
만 구현해야합니다. 이것들은 boost/operators.hpp
에서 찾을 수 있습니다.
또한 비교 연산자를 기본 클래스 또는 인터페이스 클래스에 배치하는 것이 Descendent_A를 두 개의 다른 자손 클래스 인 Descendent_B와 비교할 수 있으므로 매우 까다로울 수 있다는 것을 알게되었습니다.
비교 연산자는 클래스에서 필요에 따라 구현되어야합니다. 많은 수업에는 필요하지 않습니다. 또한 상속의 파급 효과를 고려하지 않고 기본 클래스에서 구현하거나 정의해야합니다.
- 1. 오브젝트를 연산자 X에 과부하가 걸리도록 "가정"하는 방법은 무엇입니까?
- 2. BlazeDS 및 Spring에 필요한 최소 .jar는 무엇입니까?
- 3. 최소/최대 조건 연산자 사용
- 4. WCF 서비스 - 필요한 최소 web.config?
- 5. 원격으로 Windows 서비스를 설치하는 데 필요한 최소 권한
- 6. 레일 앱에 필요한 최소 파일 수는 얼마입니까?
- 7. 연산자 new와 연산자 new [] 사이의 차이점은 무엇입니까?
- 8. Direct3D9 장치를 만드는 데 필요한 최소 코드
- 9. Lucene : 검색에 필요한 최소 유사성 설정
- 10. (동적) 링크를 수행하는 데 필요한 최소 정보량?
- 11. 애플릿을 실행하는 데 필요한 최소 Java 버전
- 12. 애플리케이션을 Ajax 애플리케이션으로 간주하기 위해 필요한 최소 요구 사항은 무엇입니까?
- 13. Eclipse : 헤드리스 PDE 빌드에 필요한 최소 Eclipse 설치는 무엇입니까?
- 14. 보석을 설치하는 데 필요한 최소 Xcode Dev Tools 패키지는 무엇입니까?
- 15. MbUnit 테스트에서 Gallio를 실행하는 데 필요한 최소 바이너리는 무엇입니까?
- 16. 시퀀스 계산에 필요한 최소 시퀀스 "프리미티브"는 무엇입니까?
- 17. Windows 서비스를 설치하는 데 필요한 최소 사용자 권한은 무엇입니까?
- 18. 과부하 + = 연산자에 과부하가 걸렸습니까?
- 19. 의 XPath 노드 집합은 자바
- 20. MySQL 테이블 복구에 필요한 최소 파일 세트 (MyISAM 및 InnoDB)
- 21. '0'인수가 과부하가 아닙니다. [C#]
- 22. 업데이트 할 수있는 쿼리에 필요한 최소 사용 권한 (Access Project)
- 23. 위키 백과 페이지의 하위 집합은 어떻게 받습니까?
- 24. 오류로 인해 스마트 포인터 템플릿 연산자 과부하가 실패합니다. C2244 : "함수 정의를 기존 선언과 일치시킬 수 없습니다."
- 25. 연산자 오버로딩 C++
- 26. 필요한 최소 버전이있는 경우 어떻게 clickOnce를 롤백 할 수 있습니까?
- 27. jQuery로 전체 항목을 표시하는 데 필요한 최소 너비를 찾으십니까?
- 28. .NET의 Active Directory에서 필요한 최소 암호 길이 값을 얻는 방법
- 29. Windows 서비스를 도메인 계정으로 실행하는 데 필요한 최소 권한
- 30. SQL 집합에 필요한 최소 권한을 확인하는 도구가 있습니까?
연산자 오버로드에 대한 훌륭한 FAQ (http://stackoverflow.com/questions/4421706/operator-overloading/4421719#4421719)를보고 싶을 수도 있습니다. 질문에 대해서도 다루고 있습니다. –