C++编译系统已经对“<<”和“>>”进行了重载,使之作为流插入运算符和流提取运算符,能用来输入和输出C++标准类型的数据
用户也当然可以对流插入提取运算符进行重载来输入输出自己声明类型的数据
对“<<”和“>>”重载的函数形式如下:
ostream & operator << (ostream &, 自定义类 &);
istream & operator >> (istream &, 自定义类 &);
下面写一段对分数的输入、输出运算符重载代码:
#include <iostream>
using namespace std;
class CFraction
{
private:
int nume; //分子
int deno; //分母
public:
CFraction();
friend istream &operator >>(istream &, CFraction &); //声明流插入运算符函数
friend ostream &operator <<(ostream &, CFraction &); //声明流提取运算符函数
};
CFraction::CFraction()
{
nume = 0;
deno = 0;
}
ostream & operator <<(ostream &output, CFraction &c) //流提取运算符函数
{
output << c.nume << "/" << c.deno << endl;
return output;
}
istream & operator >>(istream &input, CFraction &c) //流插入运算符函数
{
cout << "输入分子和分母" << endl;
input >> c.nume >> c.deno;
return input;
}
int main()
{
CFraction s;
cin >> s;
cout << s;
return 0;
}
注意:重载流插入提取运算符时,只能将重载“>>”和“<<”的函数作为友元函数,而不能将它们定义为成员函数