c++输入输出运算符重载
时间: 2023-05-27 16:04:57 浏览: 111
C++中的输入输出运算符重载是一种特殊的函数重载,其目的是为了让自定义的类类型也能像基本数据类型一样使用输入输出运算符来进行输入输出操作。
重载运算符的语法格式为:
```
istream& operator>>(istream& is, MyClass& obj) {
// 读取输入,并将结果存储在 obj 中
return is;
}
ostream& operator<<(ostream& os, const MyClass& obj) {
// 将 obj 输出到 os 中
return os;
}
```
其中,`operator>>` 和 `operator<<` 分别表示输入和输出运算符,`istream` 和 `ostream` 是输入输出流类,`MyClass` 是自定义的类类型。
在重载输入运算符时,需要从输入流中读取数据,并将其存储在类的成员变量中;在重载输出运算符时,需要将类的成员变量输出到输出流中。
例如,如果我们有一个自定义的类 `Person`,其成员变量包括姓名和年龄,我们可以通过重载输入输出运算符来实现输入输出操作:
```
class Person {
public:
string name;
int age;
};
istream& operator>>(istream& is, Person& p) {
is >> p.name >> p.age;
return is;
}
ostream& operator<<(ostream& os, const Person& p) {
os << p.name << " " << p.age;
return os;
}
```
这样,我们就可以使用 `>>` 和 `<<` 运算符来进行输入输出操作:
```
Person p;
cin >> p;
cout << p;
```
注意,输入运算符的第二个参数必须是一个非常量引用,因为需要修改对象的状态;输出运算符的第二个参数可以是一个常量引用,因为不需要修改对象的状态。
阅读全文