在C++中,要定义一个运算符重载函数,需要满足以下条件:
+
,那么返回类型应该是参与运算的对象的类型。+
,那么参数列表应该包含两个参与运算的对象。=
。因为const成员函数不能修改对象的状态,而赋值运算符需要修改对象的状态。=
、复合赋值运算符(如+=
、-=
等)和比较运算符(如==
、!=
等),还需要满足一些额外的要求。例如,赋值运算符重载函数必须返回对当前对象的引用,复合赋值运算符重载函数必须返回一个与参与运算的对象相同类型的对象,比较运算符重载函数必须返回一个布尔值。以下是一些常见的运算符重载函数的示例:
class MyClass {
public:
int x, y;
MyClass operator+(const MyClass& other) const {
return MyClass{x + other.x, y + other.y};
}
MyClass& operator+=(const MyClass& other) {
x += other.x;
y += other.y;
return *this;
}
bool operator==(const MyClass& other) const {
return x == other.x && y == other.y;
}
};
在这个示例中,我们重载了加法运算符+
、复合赋值运算符+=
和比较运算符==
。这些重载函数都满足上述条件。