📜  等于运算符 c++ overlaod - C++ (1)

📅  最后修改于: 2023-12-03 15:27:25.001000             🧑  作者: Mango

等于运算符重载

在C++中,等于运算符(==)的作用是比较两个对象是否相等。对于自定义的数据类型,需要重载等于运算符才能实现对象之间的比较。

语法

等于运算符的重载语法如下:

bool operator==(const 类型名& 对象名) const;

其中,类型名是需要进行等于运算符重载的数据类型,对象名是需要进行比较的另一个对象。

实现步骤

等于运算符的重载通常包括以下步骤:

  1. 定义等于运算符重载函数的原型。
  2. 在类的声明中声明该函数为友元函数。
  3. 在类外定义该函数,按照实际需求进行比较,并返回比较结果。

具体实现可参考下面的示例程序。

示例程序

下面是一个自定义的Point类,用来表示二维平面上的点,包括x,y坐标。

class Point {
public:
    Point(int x = 0, int y = 0) : x(x), y(y) {} // 构造函数
    int getX() const { return x; }
    int getY() const { return y; }
    void setX(int x) { this->x = x; }
    void setY(int y) { this->y = y; }
private:
    int x, y; // 坐标
};

为了能够比较两个Point对象是否相等,我们需要对其等于运算符进行重载。在这个例子中,我们定义了当且仅当两个Point对象的x坐标和y坐标都相同时,它们才相等。

class Point {
public:
    Point(int x = 0, int y = 0) : x(x), y(y) {} // 构造函数
    int getX() const { return x; }
    int getY() const { return y; }
    void setX(int x) { this->x = x; }
    void setY(int y) { this->y = y; }
    bool operator==(const Point& p) const; // 声明等于运算符重载函数为友元函数
private:
    int x, y; // 坐标
};

bool Point::operator==(const Point& p) const {
    return (x == p.x) && (y == p.y); // 按照需求进行比较
}

现在,我们就可以愉快地比较Point对象是否相等了。

int main() {
    Point p1(1, 2), p2(3, 4), p3(1, 2);
    if (p1 == p2) {
        cout << "p1 and p2 are equal." << endl;
    } else if (p1 == p3) {
        cout << "p1 and p3 are equal." << endl;
    }
    return 0;
}

输出结果:

p1 and p3 are equal.
总结

等于运算符的重载是C++中重载运算符的基础之一。通过对等于运算符进行重载,我们可以比较自定义数据类型的对象是否相等,从而更方便地进行各种操作。