【问题标题】:overloading equals equals sign return statement重载 equals 等号 return 语句
【发布时间】:2014-03-09 16:53:46
【问题描述】:

我想问一个简单的问题,我已经制作了一类矩形,我知道如何重载 +、-、* 和 /,但是在重载 == 运算符时会感到困惑,参考资料是这样的

bool rectangle::operator==(const rectangle& Rectangle) const
{
return (length == Rectangle.length &&  width == Rectangle.width);
}

我没看懂它的return语句,请谁能简单解释一下。谢谢。

【问题讨论】:

    标签: c++


    【解决方案1】:

    在这个重载的运算符 == 中,您返回 bool。 Bool 是一种只能有两个值的类型: 真假。

    在这种情况下,仅当两个矩形的长度和宽度相等时,您的函数才会返回 true。

    在此语句中,您有两个与等于布尔代数 and 的符号。因此,只有当宽度和长度相等时,函数才会返回 true。

    【讨论】:

    • 我们不必使用 if 语句 if(length == Rectangle.length && width == Rectangle.width){return true} else {return false}????
    • 不,因为每个带有布尔代数符号的语句都会返回一个布尔值(真/假)。当您使用 if(..==...) 时,等号返回一个用于 if 的值,因此您可以在其他语句中使用该值。
    • @user3215228 否。如果比较的值为true,您将返回true。如果是false,您将返回false。在这两种情况下,您都会返回比较的值。所以你只是直接返回比较的值,而不是把事情复杂化。
    • 是的,在这种情况下,当从比较中返回值时,您必须在它之前添加 return:return (...==...) 与您的 if 语句完全相同。
    【解决方案2】:

    它返回一个布尔值(真/假),正如等式运算符 (==) 所期望的那样。
    该函数比较 lhs 和 rhs 的长度和宽度,如果两者相等则返回 true

    【讨论】:

    • 我们不必使用 if 语句 if(length == Rectangle.length && width == Rectangle.width){return true} else {return false}????
    • 这是您粘贴的内容的简写形式。
    猜你喜欢
    • 1970-01-01
    • 2014-08-06
    • 2016-12-29
    • 2017-02-05
    • 1970-01-01
    • 2014-10-07
    • 2016-01-29
    • 1970-01-01
    • 2022-11-17
    相关资源
    最近更新 更多