2010-03-21 7 views
6

operator-()와 같이 오버로드하면 object의 왼쪽에 사용되지만 operator()와 같은 오버로드()는 객체의 오른쪽에 사용됩니다. 어떤 연산자가 왼쪽에서 사용되고 어떤 연산자가 오른쪽에서 사용되어야하는지 어떻게 알 수 있습니까?C++에서 연산자 오버로드

+2

이것은 간단한 대답을 가지고 있지만, 프로그래밍에 익숙하지 않은 사람의 관점에서 보면 이것이 두통의 원인이 될 수 있다고 상상할 수 있습니다. +1 –

답변

3

operator precedence chart을보세요. 이렇게하면 연산자가 연결하는 방향을 알 수 있습니다 (바인딩). 일부 연산자는 이진 및 단항 -과 같이 의미가 다른 여러 형식이 있음에 유의하십시오. 이러한 경우 :,

T operator-() 

및 예컨대 여러 과부하가있을 수 있습니다 :

T operator-(const T &o) 

컴파일러는 연산자의 구문 해석을 기반으로 올바른 하나를 선택합니다.

이 내용도 참조하십시오. set of guidelines.

+0

'operator-()'는 실제로 아무것도 반환하지 않습니다. 값의 부정 또는 값의 차이 인 적절한 유형의 값을 반환하면 안됩니까? –

+0

잡아줘서 고마워, 조나단. 이제 해결되었습니다. –

1

대부분의 단항 연산자는 피연산자의 지정된 부분에만 배치 할 수 있습니다. 두 특수한 경우, ++--this FAQ을 참조하십시오.