重载 == 运算符 C++

发布于 2024-10-29 18:15:21 字数 440 浏览 1 评论 0原文

我重载了 + 运算符,但现在我想重载 2 个长度的 == 运算符(长度可能相同,也可能不同)并返回各自的结果。我该怎么做?我需要使用 bool 来表示 == 吗?

//我做了什么来重载+运算符以从2个不同的长度中获取新的长度

Length operator+ (const Length& lengthA){       

    int newlengthMin = min, newlengthMax = max;

    if (lengthA.min < min)
        newLengthMin = lengthA.min;
    if  (lengthA.max > max)
        newLengthMax = lengthA.max;

    return Length(newLengthMin, newLengthMax);
}

i did an overloading of the + operator but now i wanna do overloading of == operator of 2 lengths (may or may not be the same length) and return the respective results. How do i do it? Do i need to use bool for ==?

//what i did for overloading + operator to get new length out of 2 different lengths

Length operator+ (const Length& lengthA){       

    int newlengthMin = min, newlengthMax = max;

    if (lengthA.min < min)
        newLengthMin = lengthA.min;
    if  (lengthA.max > max)
        newLengthMax = lengthA.max;

    return Length(newLengthMin, newLengthMax);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

浮华 2024-11-05 18:15:21

对于简单情况,请使用bool运算符==(const Length& other) const。请注意 const - 比较运算符不需要修改其操作数。你的operator+也不应该!

如果要利用两侧的隐式转换,请在全局范围内声明比较运算符:

bool operator==(const Length& a, const Length& b) {...}

For the simple case, use bool operator==(const Length& other) const. Note the const - a comparison operator shouldn't need to modify its operands. Neither should your operator+!

If you want to take advantage of implicit conversions on both sides, declare the comparison operator at global scope:

bool operator==(const Length& a, const Length& b) {...}

怪我闹别瞎闹 2024-11-05 18:15:21

使用 bool 并确保添加 const

bool operator==(const Length& lengthA) const { return ...; }

您还可以使用两个参数(每个对象一个)将其设置为全局。

Use bool and make sure to add const as well.

bool operator==(const Length& lengthA) const { return ...; }

You can also make it global, with two arguments (one for each object).

擦肩而过的背影 2024-11-05 18:15:21

是的,相等运算符是比较运算。您将返回一个指示正确条件的布尔值。它会是这样的:

bool operator== (const Length& lengthA, const Length& lengthB) const {
    return (lengthA.min == lengthB.min) && (lengthA.max == lengthB.max);
}

Yes, the equality operator is a comparison operation. You'll return a boolean indicating the correct condition. It would be something like this:

bool operator== (const Length& lengthA, const Length& lengthB) const {
    return (lengthA.min == lengthB.min) && (lengthA.max == lengthB.max);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文