自定义类型例如struct student或class student如何重载<、==、>、<<等运算符;重载
时间: 2024-02-28 21:55:38 浏览: 75
C#中的==运算符
C++中可以通过重载运算符来改变自定义类型的行为。以下是示例代码,演示如何定义struct student并重载运算符:
```c++
#include <iostream>
using namespace std;
struct student {
string name;
int score;
bool operator < (const student& s) const {
return score < s.score;
}
bool operator == (const student& s) const {
return name == s.name && score == s.score;
}
bool operator > (const student& s) const {
return score > s.score;
}
friend ostream& operator << (ostream& os, const student& s) {
os << s.name << " " << s.score;
return os;
}
};
int main() {
student s1 = {"Alice", 80};
student s2 = {"Bob", 90};
student s3 = {"Charlie", 80};
cout << boolalpha;
cout << (s1 < s2) << endl; // output: true
cout << (s1 == s3) << endl; // output: true
cout << (s2 > s3) << endl; // output: true
cout << s1 << endl; // output: Alice 80
return 0;
}
```
在上面的示例代码中,我们定义了struct student,并重载了<、==、>、<<运算符。其中,<、==和>运算符都是成员函数,并且都使用了const关键字,表示这些函数不会修改对象的状态。<<运算符是一个友元函数,可以访问private成员。通过重载运算符,我们可以使用自定义类型的对象进行比较、输出等操作。
阅读全文