如何比较C ++中两个对象的成员变量?

时间:2013-11-27 17:28:55

标签: c++ oop

我在C ++中创建了一个类Fraction,它存储了一个分数的分子和分母,并且有各种方法来操作这些数字。我如何比较一个对象的内容?我的想法是将指向第二个对象的指针传递给执行比较的第一个对象的方法。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:3)

你应该简单地重载==运算符。

答案 1 :(得分:3)

您可以重载运算符==,如下所示:

bool operator==(const Fraction &left, const Fraction &right) {
    // Warning: this check is oversimplified; it may overflow!
    return left.num*right.denom == right.num*left.denom;
}

现在你可以这样做:

Fraction a(10, 20);
Fraction b(2, 4);
if (a == b) {
    ...
}

有关运算符重载的一般信息:link

答案 2 :(得分:2)

看看这个。 Operator overloading

我建议您声明并定义适当的重载运算符。上述链接的答案为您提供了有关如何实现这一目标的指导。这将允许您使用与内置类型相同的自然语法在类实例(对象)上使用运算符。

答案 3 :(得分:1)

如果您要与相同类型的对象进行比较,您可以直接实现比较成员的功能,即使它们是私有的。如果你想测试相等,不等和低于/大于那么我建议你重载相应的运算符:

Operator overloading

但是,如果您希望比较不同类型的对象,那么您有几个选项。您可以实现访问器方法(“getters”)并在比较方法中使用它们,您可以更改这些变量的访问权限(不鼓励),或者您可以使用friend关键字但谨慎使用它。

When should you use 'friend' in C++?