重载“流提取运算符—— >> ”
作为计算机专业的同学来说,了解计算机的原理的是很有必要的。
">>":插入运算流, 该运算符在istream(输入流类中);
"<<" : 提取运算流, 该运算符在ostream(输出流类中);
对“ >> ”“ << ”重载的函数形式如下 :
istream & operator >>(istream &, 自定义类&);
ostream & opreator <<(ostream &, 自定义类&);
需要注意的是:
只能将重载">>"和"<<"的函数作为友元函数或者普通的函数,而不能将他们定义为成员函数。
#include <iostream>
#include <cstring>
using namespace std;
class myclass
{
public:
friend ostream&operator <<(ostream&, myclass&);//声明重载运算符“<<”函数;
friend istream&operator >>(istream&, myclass&);//声明重在运算符“>>”函数;
private:
double real;
double imag;
};
istream &operator >> (istream &in, myclass &c2)//定义“>>”函数
{
cout << "请输入你要计算的复数的实部和虚部:" << endl;
in >> c2.real >> c2.imag;
return in;
}
ostream &operator << (ostream &out, myclass &c1)//定义“<<”函数
{
out << "(" << c1.real;
if (c1.imag >= 0)
{
out << "+";
}//只有在虚部为正数时前面加“+”,否则不加“+”;
out<< c1.imag << "i)";
return out;
}
int main()
{
myclass c1, c2;
cin >> c1;
cout << "c1=" << c1 << endl;
cin >> c2;
cout << "c2=" << c2 << endl;
return 0;
}