0

是否可以在另一个类函数中使用重载运算符而不是主函数?

示例 我在公共下有 2 个类函数:

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

我想在第二个函数中使用第一个函数中的重载运算符。我希望第二个函数中的代码是这样的:

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

那么,我可以这样做吗?如果我可以怎么办?

4

2 回答 2

2

您重载了运算符<>=在代码中使用了。所以你需要另一个重载函数或改变前一个:

Angle Angle::operator- (Angle a2)
{
if (*this<a2)
cout<<"You can't subtract greater angle from a smaller one"<<endl;
else
{...}
}
于 2013-07-22T00:20:58.970 回答
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);. 但是正如其他人所说,您只能使用实际超载的那些。他们不会自己出现。

于 2013-07-22T00:40:50.477 回答