推导">"来自"<"操作者

时间:2015-11-17 17:14:03

标签: c++ operators

我正在尝试仅使用operator>()<||运算符来实现!函数。我可以使用== oparator这样做,但我无法弄清楚如何仅使用三个给定的运算符来消除一个操作数等于另一个操作数的情况。以下是我如何做到这一点:

bool operator>(a, b){
    if(!(a < b) || !(a == b){
        return true;
    }
    else{
        return false;
    }
}

到目前为止,我提出的唯一可行方法是以某种方式创建一个递归函数。除此之外,还有其他方法可以做到这一点吗?

2 个答案:

答案 0 :(得分:3)

a < b当且仅当b > a - 正如@Kerrek上面提到的那样。

bool operator>(a, b){
    if(b < a){
        return true;
    }
    else{
        return false;
    }
}

编辑:或者甚至为了进一步简化,感谢下面的@Mokosha

bool operator>(a, b){
    return b < a;
}

答案 1 :(得分:1)

除了@KerrekSB提出的明显解决方案(由于它的简单性而最好),作为一种好奇心,你也可以使用XNOR运算符从代码中遵循这种方法(注意它&#39;仅使用||运算符无法做到这一点,因为要定义XOR,您需要||&&运算符 - 更多here):

bool operator>(a, b){
    if(!(a < b) || !(x ^ y){
        return true;
    }
    else{
        return false;
    } 
}