曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3652|回复: 0
打印 上一主题 下一主题

重载关系运算符和逻辑运算符

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2011-8-18 18:15:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
与重载算术运算符一样,关系运算符和逻辑运算符也可以重载 (如 ==, < 或者 &&)。一般情况下,重载运算符返回的是一个对象,但是重载关系运算符和逻辑运算符返回的是一个真值或者假值。与元运算符的行为一致,重载的关系运算符或逻辑运算符也可以用在条件表达式中。

示例代码:
[C++] 纯文本查看 复制代码
#include <iostream>
using namespace std;

class three_d {
public:
    int x, y, z;
    three_d() { x = y = z = 0; };
    three_d (int i, int j, int k) { x = i; y = j; z = k; }
    bool operator==(three_d op2);
};

bool three_d::operator==(three_d op2)
{
    if ((x == op2.x) && (y == op2.y) && (z == op2.z))
        return true;
    else
        return false;
}

int main()
{
    three_d a(1, 2, 3), b(5, 6, 9), c(5, 6, 9);

    if (a == b)
        cout << "a is equal to b\n";
    else
        cout << "a is not equal to b\n";

    if (b == c)
        cout << "b is equal to c\n";
    else
        cout << "b is not equal to c\n";

    return 0;
}

运行输出:
$ ./relogic
a is not equal to b
b is equal to c
因为运算符 '==' 返回的是 bool 类型,所以表达式 a == b 的运算结果可以用在 if 条件控制语句中。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-17 20:36 , Processed in 0.071164 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表