c++重载输入输出运算符
时间: 2023-07-05 14:18:49 浏览: 53
在 C++ 中,我们可以通过重载输入输出运算符来实现自定义的输入输出格式。下面是一个示例:
```cpp
#include <iostream>
using namespace std;
class Person {
private:
string name;
int age;
public:
friend ostream& operator<<(ostream& os, const Person& p);
friend istream& operator>>(istream& is, Person& p);
};
ostream& operator<<(ostream& os, const Person& p) {
os << "Name: " << p.name << ", Age: " << p.age;
return os;
}
istream& operator>>(istream& is, Person& p) {
cout << "Enter name: ";
is >> p.name;
cout << "Enter age: ";
is >> p.age;
return is;
}
int main() {
Person p;
cin >> p;
cout << p << endl;
return 0;
}
```
在这个例子中,我们定义了一个 Person 类,然后重载了输出运算符 `<<` 和输入运算符 `>>`。在输出运算符中,我们使用 `os` 对象输出 Person 对象的姓名和年龄;在输入运算符中,我们使用 `is` 对象从标准输入读入 Person 对象的姓名和年龄。在 `main` 函数中,我们首先使用输入运算符从标准输入读入 Person 对象,然后使用输出运算符将其输出到标准输出。
注意,输入运算符和输出运算符都是全局函数,并且需要声明为类的友元函数,以便访问类的私有成员。同时,输出运算符的第一个参数类型为 `ostream&`,输入运算符的第一个参数类型为 `istream&`,这样才能够对标准输出和标准输入进行操作。