2013-07-22 6 views
0

오버로드 된 연산자를 main 함수 대신 다른 클래스 함수에서 사용할 수 있습니까?연산자 오버로딩 (C++)

는 I 공개하에 2 개 급 기능을 가지고

bool Angle::operator< (Angle& a2){...} 
Angle Angle::operator- (Angle a2){...} 

는 I 번째 한 제 함수의 과부하 연산자 사용할. 두 번째 함수의 코드를 다음과 같이 바꿔야합니다.

Angle Angle::operator- (Angle a2) 
{ 
if (*this>=a2) 
{...} 
else 
cout<<"You can't subtract greater angle from a smaller one"<<endl; 
} 

이렇게 할 수 있습니까? 내가 어떻게 할 수 있다면?

+0

'operator> ='을 오버로드하면? 또는 코드를'> ='대신'<'를 사용하도록 바꾸면됩니까? –

+0

왜 당신은 논평을 통해 인수를 전달합니까? 그것을 변경할 필요가 없다면 const 참조 나 값으로 전달하십시오. – Simon

답변

2

< 연산자를 오버로드했으며 코드에 >=을 사용했습니다.

Angle Angle::operator- (Angle a2) 
{ 
if (*this<a2) 
cout<<"You can't subtract greater angle from a smaller one"<<endl; 
else 
{...} 
} 
0

당신이처럼 쓸 수있다 :

Angle Angle::operator- (Angle a2) 
{ 
    if (!((*this) < a2)) 
     {...} 
    else 
     cout<<"You can't subtract greater angle from a smaller one"<<endl; 
} 

>=하지 < 한 사람들이 가지고 구현되었습니다로 동일합니다 그래서 당신은 다른 이전 한 기능 과부하 또는 변경 필요 예상되는 의미.

짧은 답변은 예입니다. 다른 연산자에서 하나의 오버로드 된 연산자를 확실히 호출 할 수 있습니다. 사실, 많은 경우에 운영자 구현을위한 정상적인 형태는 다른 측면에서 그것을 수행하는 것입니다. 예를 들어, operator!=은 종종 return !(*this == other);으로 구현되어야합니다. 그러나 다른 사람들이 말했듯이 실제로 과대 적재 한 것만 사용할 수 있습니다. 그들은 독자적으로 나타나지 않을 것입니다.