自定义类型例如struct Student或class Student如何重载<、==、>、<<等运算符
时间: 2023-12-27 13:05:07 浏览: 90
python 运算符重载 - 自定义分数类 示例
在 C++ 中,我们可以通过运算符重载(operator overloading)来重载运算符,包括 <、==、>、<< 等。对于自定义类型如 struct Student 或 class Student,我们可以按照以下步骤进行运算符重载:
1. 定义运算符函数,函数名为 operator 运算符符号,例如:operator<、operator==、operator>、operator<< 等。
2. 在函数中实现运算符的功能,返回运算结果。
3. 在类的定义中声明运算符函数,以便在使用时进行调用。
下面是一个示例,演示如何重载 < 运算符:
```c++
#include <iostream>
#include <string>
using namespace std;
struct Student {
string name;
int age;
float score;
bool operator<(const Student& other) {
return this->score < other.score;
}
};
int main() {
Student s1{"Tom", 18, 90};
Student s2{"Jerry", 20, 80};
if (s1 < s2) {
cout << s1.name << " is better than " << s2.name << endl;
} else {
cout << s2.name << " is better than " << s1.name << endl;
}
return 0;
}
```
在上面的示例中,我们定义了一个名为 Student 的结构体,并在其中重载了 < 运算符。在 main 函数中,我们创建了两个 Student 对象,并通过 < 运算符比较它们的成绩。最终,程序将输出 "Tom is better than Jerry"。
类似地,我们可以重载其他运算符,例如:operator==、operator>、operator<< 等。重载后的运算符可以像内置类型一样使用,使代码更加简洁、易读。
阅读全文