c++输入输出流类内重载
时间: 2024-01-04 20:19:18 浏览: 81
c++类和输入输出重载
在C++中,可以通过重载输入输出流运算符来实现类内的输入输出操作。这样可以方便地使用输入输出流来操作类的对象。
下面是一个示例,演示了如何在C++中实现类内的输入输出流重载:
```cpp
#include <iostream>
using namespace std;
class stuinfo {
private:
int id;
char name[20];
public:
stuinfo(int i, const char* n) {
id = i;
strcpy(name, n);
}
friend ostream& operator<<(ostream& out, const stuinfo& obj) {
out << "ID: " << obj.id << ", Name: " << obj.name;
return out;
}
friend istream& operator>>(istream& in, stuinfo& obj) {
cout << "Enter ID: ";
in >> obj.id;
cout << "Enter Name: ";
in >> obj.name;
return in;
}
};
int main() {
stuinfo s(123, "John");
cout << s << endl; // 输出:ID: 123, Name: John
stuinfo s2;
cin >> s2;
cout << s2 << endl; // 根据输入的ID和Name输出
return 0;
}
```
在上面的示例中,我们定义了一个名为`stuinfo`的类,其中包含了一个私有成员变量`id`和一个字符数组`name`。我们通过重载`<<`和`>>`运算符来实现了类内的输出和输入操作。
在`operator<<`函数中,我们使用了友元函数来访问私有成员变量,并将对象的`id`和`name`输出到输出流中。
在`operator>>`函数中,我们同样使用了友元函数来访问私有成员变量,并从输入流中读取用户输入的`id`和`name`。
在`main`函数中,我们创建了一个`stuinfo`对象`s`,并通过重载的`<<`运算符将其输出到标准输出流中。然后,我们创建了另一个`stuinfo`对象`s2`,并通过重载的`>>`运算符从标准输入流中读取用户输入的`id`和`name`,然后再将其输出到标准输出流中。
阅读全文