📅  最后修改于: 2023-12-03 15:27:25.001000             🧑  作者: Mango
在C++中,等于运算符(==)的作用是比较两个对象是否相等。对于自定义的数据类型,需要重载等于运算符才能实现对象之间的比较。
等于运算符的重载语法如下:
bool operator==(const 类型名& 对象名) const;
其中,类型名
是需要进行等于运算符重载的数据类型,对象名
是需要进行比较的另一个对象。
等于运算符的重载通常包括以下步骤:
具体实现可参考下面的示例程序。
下面是一个自定义的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++中重载运算符的基础之一。通过对等于运算符进行重载,我们可以比较自定义数据类型的对象是否相等,从而更方便地进行各种操作。