2011-10-23 7 views
0

회원이 아닌 과부하 또는 회원 과부하를 사용해야합니까? 어떤 것을 사용해야하는지 어떻게 알 수 있습니까? 이 함수는 클래스의 공용 인터페이스에 대한 액세스를 필요로하는 경우비회원 연산자 오버로딩은 언제 사용해야합니까?

만들 : (이 몹시 엄격한 또는 필수 비록)

답변

3

당신이 operator< 또는 swap 같은 것을 생각하는 경우는, 엄지 손가락의 규칙있다 그것은 자유로운 비회원 기능입니다. 그렇지 않으면 멤버 함수로 만듭니다. (또는 friend 자유 함수를 고려할 수 있습니다.)

연산자의 오버로드의 경우 사용자 정의 유형으로 피연산자 중 하나 이상이 필요합니다.

무료 함수의 설계상의 이점은 적용 가능한 각 클래스에 대해 연산자 버전을 구현하려는 경우 템플릿을 만들고 M * N이 아닌 M + N의 복잡성을 얻는 것입니다. 이는 귀하의 상황과 관련이있을 수도 있고 그렇지 않을 수도 있습니다.

해당 주제의 Nawaz's very fine answer도 참조하십시오.

+0

답변 주셔서 감사합니다. 매우 도움이됩니다. – flumpb

관련 문제