05-5 运算符重载-关系运算符
关系运算符包括:大于(>
)、小于(<
)、等于(==
)、不等于(!=
)、大于或等于(>=
)、小于或等于(<=
)。
关系运算符重载的作用:利用关系运算符,可以让两个自定义类型的对象进行对比。
我们主要学习的是等于和不等于的判断。但是大于小于等等也是可以的。
完成关系运算符重载有两种方法:
- 在成员函数里面实现重载。
- 在全局函数里面实现重载。
接下来,我们以等于(==
)为例子详细记录一下。
-
在成员函数里面实现重载。
class test { public: int m_A; int m_B; test() { m_A = 10; m_B = 20; } bool operator==(class test& p) { if (m_A == p.m_A && m_B == p.m_B) { return true; } else { return false; } } };
提示:在 c++中,
&&
表示的是and
(与),||
表示的是or
(或)。在这里,我们创建了一个类。这个类中有
m_A
和m_B
两个成员属性。如果存在两个变量使得两个成员属性都相同,我们就认为这两个变量是相同的。因为一般的关系运算符只有是或者否两种表达形式,在 c++中就是布尔类型(
bool
),所以我们使用布尔(bool
)作为返回值。提示:在 c++中,布尔类型:
0
表示false
(否),1
(或者其他数字)表示true
(是)。我们运行一下:
int main() { class test t1; class test t2; cout << (t1 == t2) << endl; return 0; }
运行结果:(环境:Windows11(arm/Apple M VM)/Visual Studio 2022/Debug/arm64)
1
-
在全局函数里面实现重载。
bool operator==(class test& p1, class test& p2) { if (p1.m_A == p2.m_A && p1.m_B == p2.m_B) { return true; } else { return false; } }
当然如果是属性是私有的(
private
),记得添加友元(friend
)或者提供公共权限(public
)下的接口哦。 -
其他的关系运算符(以全局函数为例):
-
等于(
==
)bool operator==(class test& p1, class test& p2) { if (p1.m_A == p2.m_A && p1.m_B == p2.m_B) { return true; } else { return false; } }
-
不等于(
!=
)bool operator!=(class test& p1, class test& p2) { if (p1.m_A != p2.m_A && p1.m_B != p2.m_B) { return true; } else { return false; } }
-
大于(
>
)bool operator!=(class test& p1, class test& p2) { if (p1.m_A > p2.m_A && p1.m_B > p2.m_B) { return true; } else { return false; } }
-
小于(
<
)bool operator!=(class test& p1, class test& p2) { if (p1.m_A < p2.m_A && p1.m_B < p2.m_B) { return true; } else { return false; } }
-
大于或等于(
>=
)bool operator!=(class test& p1, class test& p2) { if (p1.m_A >= p2.m_A && p1.m_B >= p2.m_B) { return true; } else { return false; } }
-
小于或等于(
<=
)bool operator!=(class test& p1, class test& p2) { if (p1.m_A <= p2.m_A && p1.m_B <= p2.m_B) { return true; } else { return false; } }
-
:-)