曲径通幽论坛

标题: 重载关系运算符和逻辑运算符 [打印本页]

作者: beyes    时间: 2011-8-18 18:15
标题: 重载关系运算符和逻辑运算符
与重载算术运算符一样,关系运算符和逻辑运算符也可以重载 (如 ==, < 或者 &&)。一般情况下,重载运算符返回的是一个对象,但是重载关系运算符和逻辑运算符返回的是一个真值或者假值。与元运算符的行为一致,重载的关系运算符或逻辑运算符也可以用在条件表达式中。

示例代码:
[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 条件控制语句中。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2