1、因为自定义的类无法用cin>>X
输入,无法用cout<<X
输出,所以要运用重载输入输出运算符的方式进行对类的输入与输出。
2、他们一般被声明为友元函数,声明在类内,定义在类外。
3、重载输入用istream,重载输出用ostream。
4、样式:
class X
{
private:
int _x,int _y;
public:
friend ostream& operator<<(ostream& os,X& p);//其中os与p都可以命名为其他的名字;
friend istream& operator>>(istream& is,X& p);
};
ostream& operator<<(ostream& os,X& p)
{
os<<p._x<<" "<<p._y<<endl;
return os;
}
istream& operator>>(istream& is,X& p)
{
is>>p._x>>p._y;
return is;
}
5、例如:
#include <iostream>
using namespace std;
class Point
{
private:
int _a,_b;
public:
// Point():_a(0),_b(0){}
friend ostream& operator<<(ostream& os,Point& p);
friend istream& operator>>(istream& is,Point& p);
};
ostream& operator<<(ostream& os,Point& p)
{
os<<p._a<<" "<<p._b<<endl;
return os;
}
istream& operator>>(istream& is,Point& p)
{
is>>p._a>>p._b;
return is;
}
int main()
{
Point p1;
cin>>p1;
cout<<p1;
}