📅  最后修改于: 2023-12-03 15:25:22.786000             🧑  作者: Mango
在 C++ 中,我们可以重载运算符。运算符重载是指:对于某些运算符,你可以自定义其行为。比如,你可以让 +
运算符可以对两个自定义的类进行相加操作。
operator
关键字开头,后面跟着运算符符号。如:operator+
就是对 +
进行重载。operator+
函数可以被 const
类型的对象所调用。以下代码示例演示了如何重载 <
运算符:
#include <iostream>
using namespace std;
class MyClass {
public:
int val;
bool operator<(const MyClass& obj) const {
return this -> val < obj.val;
}
};
int main() {
MyClass c1, c2;
c1.val = 10;
c2.val = 20;
if (c1 < c2) {
cout << "c1 is less than c2" << endl;
} else {
cout << "c1 is greater than or equal to c2" << endl;
}
return 0;
}
在上面的代码中,我们重载了 <
运算符。这里使用了一个常量成员函数 operator<
来比较两个对象的属性大小。
输出结果为:
c1 is less than c2
以下是一个比较两个字符串长度大小的示例:
#include <iostream>
#include <cstring>
using namespace std;
class MyString {
public:
char* str;
MyString(char* s) {
str = new char[strlen(s) + 1];
strcpy(str, s);
}
bool operator<(const MyString& obj) const {
return strlen(this -> str) < strlen(obj.str);
}
};
int main() {
MyString s1 = "hello";
MyString s2 = "world";
if (s1 < s2) {
cout << "s1 is less than s2" << endl;
} else {
cout << "s1 is greater than or equal to s2" << endl;
}
return 0;
}
在上面的代码中,我们重载了 <
运算符。这里使用了一个常量成员函数 operator<
来比较两个字符串的长度大小。
输出结果为:
s1 is less than s2
运算符重载可以让我们自定义运算符的行为,使得代码更加灵活,易于维护。但是,要谨慎使用运算符重载,确保代码的可读性和易用性。