为了将==
操作符定义为类的成员函数,需要在类定义中重载==
操作符并将其标记为const
。以下是具体步骤:
-
在类定义中,添加函数原型
bool operator==(const MyClass& other) const;
。 -
实现函数定义,用以下构造函数:
bool MyClass::operator==(const MyClass& other) const
{
// 判断两个对象是否相同,返回相应的 bool 值
}
注意,函数返回值应该是 bool
类型。
以下是两个MyClass
对象比较的示例:
#include <iostream>
class MyClass
{
public:
MyClass(int v) : val(v) {}
bool operator==(const MyClass& obj) const
{
return val == obj.val;
}
private:
int val;
};
int main()
{
MyClass a(2);
MyClass b(3);
MyClass c(2);
std::cout << (a == b) << '\n'; // 输出0
std::cout << (a == c) << '\n'; // 输出1
return 0;
}
以上示例中,a
和 b
对象的 ==
操作返回 false
,因为它们的值不相等。而a
和 c
对象的 ==
操作返回 true
,因为它们的值相等。
另一个例子:
#include <iostream>
class Fraction
{
public:
Fraction(int n, int d) : numer(n), denom(d) {}
bool operator==(const Fraction& other) const
{
return numer == other.numer && denom == other.denom;
}
private:
int numer; // 分子
int denom; // 分母
};
int main()
{
Fraction f1(1, 2);
Fraction f2(2, 4);
Fraction f3(2, 3);
// 相等性测试
std::cout << (f1 == f2) << '\n'; // 输出1
std::cout << (f1 == f3) << '\n'; // 输出0
return 0;
}
在这个例子中,Fraction
类重载了==
操作符,该操作符将两个Fraction
对象相互比较。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++中如何将operator==定义为类的成员函数 - Python技术站