在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;
}
};
在這個示例中,我們重載了加法運算符+
、復合賦值運算符+=
和比較運算符==
。這些重載函數都滿足上述條件。