在 C++ 中,你可以通過定義特殊的成員函數來重載類運算符。這些成員函數以關鍵字 operator
開頭,后面緊跟要重載的運算符,然后是括號,括號內可以包含參數列表(如果有的話)。下面是一些常見的運算符重載示例:
+
運算符:class MyClass {
public:
int value;
MyClass(int v) : value(v) {}
MyClass operator+(const MyClass& other) const {
return MyClass(value + other.value);
}
};
int main() {
MyClass a(1);
MyClass b(2);
MyClass c = a + b; // 使用重載的 + 運算符
return 0;
}
==
運算符:class MyClass {
public:
int value;
MyClass(int v) : value(v) {}
bool operator==(const MyClass& other) const {
return value == other.value;
}
};
int main() {
MyClass a(1);
MyClass b(1);
MyClass c(2);
if (a == b) {
std::cout << "a and b are equal" << std::endl;
} else {
std::cout << "a and b are not equal" << std::endl;
}
if (a != c) {
std::cout << "a and c are not equal" << std::endl;
} else {
std::cout << "a and c are equal" << std::endl;
}
return 0;
}
<<
運算符(用于輸出):#include <iostream>
class MyClass {
public:
int value;
MyClass(int v) : value(v) {}
friend std::ostream& operator<<(std::ostream& os, const MyClass& obj) {
os << obj.value;
return os;
}
};
int main() {
MyClass a(1);
std::cout << "a: "<< a << std::endl; // 使用重載的 << 運算符
return 0;
}
注意:當重載 <<
運算符時,通常將其聲明為 friend
函數,以便能夠訪問類的私有和保護成員。