文章内容发布于 635 天前;最后修改于 635 日前。其中的信息可能发生变化或产生更改,敬请留意。
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; } }
-