C++ 重载I/O运算符

来源:互联网 发布:bilibili直播姬 mac 编辑:程序博客网 时间:2024/06/11 16:23


C++的I/O流库的一个重要特性就是能够支持新的数据类型的输入和输出。
用户可以通过对插入符(<<)和提取符(>>)进行重载来支持新的数据类型。

重载输出运算符 "<<"
在C++中,输出操作称为插入,"<<"称为插入运算符。当重载输出运算符"<<"用
于输出时,相当于创建一个插入符函数。格式如下:
friend ostream & operator << (ostream & stream, 类名 & 类名引用)
{
 函数体;
 return stream;
}

该插入符函数是以友元方式声明的。其中的第一个参数是ostream类对象的一个引用,
stream 必须是一个输出流。"类引用名"接收待输出的对象。该函数返回ostream的
一个引用stream。"函数体"中给出实现该插入符重载目的的代码。

重载输入运算符 ">>"
在C++中,">>"运算符称为提取运算符,对他进行重载的函数称为提取符函数。
格式如下:
friend istream & operator << (istream & stream, 类名 & 类名引用)
{
 函数体;
 return stream;
}

该提取符函数是以友元方式声明的,其中的第一个参数是istream类对象的一个引用,
stream 必须是一个输入流。"类引用名"接收输入对象的引用。该函数返回istream的
一个引用stream。"函数体"中给出提取符重载目的的代码。

/*mainstream.cpp*/#include <iostream>#include "stream.h"using namespace std;int main(){student S;cin >> S;cout << S;return 0;}

/*stream.cpp */#include "stream.h"istream & operator >> (istream & stream, student & s){cout << "Please the num: "; stream >> s.num;cout << "Plrase the name: "; stream >> s.name;cout << endl;}ostream & operator << (ostream & stream, student & s){cout << "学号:"; stream << s.num << endl;cout << "名字:"; stream << s.name << endl;cout << endl;}
/*stream.h */#ifndef STREAM_H_#define STREAM_H_#include <iostream>using namespace std;class student{public:student() {}friend istream & operator >> (istream & stream, student & s);friend ostream & operator << (ostream & stream, student & s);private:int num;char name[20];};#endif



0 0
原创粉丝点击