自定义类型例如struct Student或class Student如何重载<、==、>、<<等运算符?重载目的?
时间: 2023-12-24 13:04:16 浏览: 81
在C++中,我们可以通过重载运算符来自定义类型的行为,包括比较运算符、位运算符、算术运算符、赋值运算符等等。重载运算符的目的是为了使自定义类型的行为更加符合我们的预期,使其能够像内置类型一样使用。
对于比较运算符,如<、==、>,我们可以通过在自定义类型的类定义中重载这些运算符来实现自定义类型的比较。例如,对于struct Student,我们可以这样重载<运算符:
```
struct Student {
int id;
string name;
bool operator<(const Student& rhs) const {
return id < rhs.id;
}
};
```
这样,我们就可以使用类似于以下的代码对Student进行比较:
```
Student s1{1, "Alice"};
Student s2{2, "Bob"};
if (s1 < s2) {
// do something
}
```
对于输出运算符<<,我们可以通过在自定义类型的类定义中重载这个运算符来实现对自定义类型对象的输出。例如,对于struct Student,我们可以这样重载<<运算符:
```
ostream& operator<<(ostream& os, const Student& s) {
os << "id: " << s.id << ", name: " << s.name;
return os;
}
```
这样,我们就可以使用类似于以下的代码对Student进行输出:
```
Student s{1, "Alice"};
cout << s << endl;
```
总之,重载运算符可以使自定义类型的行为更符合我们的预期,使其能够像内置类型一样使用。
阅读全文