C++学习记录-面向对象-运算符重载5-关系运算符重载

一、意义

重载关系运算符,可以实现类和类之间的比对,如 :==,!= ,> , < 等

二、分析及示例

  1. 先创建一个类

    1
    2
    3
    4
    5
    6
    7
    8
    class chara {
    public:
    string name;
    string weapon;

    public:
    chara(string a, string b):name(a),weapon(b) {}
    };
  2. 分析:

    为实现类和类之间的比对,应重载关系运算符,且返回值类型应为bool

  3. 示例代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    class chara {
    public:
    string name;
    string weapon;
    public:
    chara(string a, string b):name(a),weapon(b) {}


    //在类内实现重载,返回值类型应为bool
    bool operator==(chara& a)
    {
    if(name==a.name&&weapon==a.weapon)
    {
    return true;
    }
    return false;
    }
    };
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    void test()
    {
    chara sllh("神里绫华", "单手剑");
    chara lvxz("神里绫华", "单手剑");

    //进行比对
    if (sllh == lvxz)
    {
    cout << "是同一个角色" << endl;
    }
    else
    {
    cout << "不是同一个角色" << endl;
    }
    }

    运行结果:

    是同一个角色

    D:\Work\C艹练习\练手\Project1\Debug\Project1.exe (进程 28860)已退出,代码为 0。
    要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
    按任意键关闭此窗口. . .

其他

  • 在类外实现重载:

    1
    2
    3
    4
    5
    6
    7
    8
    bool operator==(chara& a , chara &b)
    {
    if (a.name == b.name && a.weapon == b.weapon)
    {
    return true;
    }
    return false;
    }