IO操作符必须为非成员函数(可以声明为类的友元函数)
输出输出操作符重载
Person
{
public:
friend ostream& operator<<(ostream& ,const Person&);
friend istream& operator>>(istream& ,Person&);
......
}
ostream& operator<<(ostream& os,const Person& p)
{
os<<"Person.name= "<<p.name<<endl;
os<<"Person.adress= "<<p.adress<<endl;
os<<"Person.phone_number= "<<p.phone_number<<endl;
return os;
}
istream& operator>>(istream& in,Person& p)
{
in>>p.name>>p.adress>>p.phone_number;
return in;
}
输出重载的格式: 操作符接受ostream作为第一个形参,对类类型const对象的引用作为第二个形参,并返回对ostream形参的引用
输入重载:输入操作符的第一个形参是一个引用,指向它要读的流,并且返回的也是对同一个流的引。它的第二个形参是对要读入的对象的非const引用,该形参必须是非const,因为输入操作符的目的是将数据读到这个对象中
另外,输入操作符必须处理错误和文件结束的可能性